延期、 promise 和 future 之间有什么区别?
这三个背后是否有一个普遍认可的理论?
最佳答案
这些答案,包括所选的答案,都有助于引入 promise 从概念上讲,但缺乏具体差异的具体内容 使用库实现它们时出现的术语(并且有 是重要的区别)。
既然还是an evolving spec ,目前的答案来自尝试调查引用(如 wikipedia )和实现(如 jQuery ):
延迟:流行引用文献中从未描述过, 1 2 3 4 但通常被实现用作 Promise 解析的仲裁者(实现
resolve
和reject
)。 5 6 7有时延迟也是 promise (实现
then
), 5 6 其他时候,仅使用 Deferred 被认为更纯粹 能够解决,并迫使用户访问 promise 使用then
。 7promise :对于正在讨论的策略来说,最包罗万象的词。
存储目标函数结果的代理对象,其 我们想要抽象同步性,并公开一个
then
函数 接受另一个目标函数并返回一个新的 promise 。 2示例来自 CommonJS :
> asyncComputeTheAnswerToEverything() .then(addTwo) .then(printResult); 44
future :一些流行引用文献中看似已弃用的术语 1 以及至少一种流行的实现, 8 但似乎已逐渐退出讨论,转而使用该术语 ' promise ' 3 并且在该主题的流行介绍中并不总是提及。 9
但是,至少有一个库通用地使用该术语来进行抽象 同步性和错误处理,但不提供
then
功能。 10 目前尚不清楚回避“ promise ”一词是否是有意为之,但可能是 这是一个不错的选择,因为 Promise 是围绕“thenables”构建的。 2
引用文献
- Wikipedia on Promises & Futures
- Promises/A+ spec
- DOM Standard on Promises
- DOM Standard Promises Spec WIP
- DOJO Toolkit Deferreds
- jQuery Deferreds
- Q
- FutureJS
- Functional Javascript section on Promises
- Futures in AngularJS Integration Testing
其他可能令人困惑的事情
Difference between Promises/A and Promises/A+
(TL;DR,Promises/A+ 主要解决 Promises/A 中的歧义)
关于javascript - JavaScript 中的 Deferred、Promise 和 Future 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200079/