gpt4 book ai didi

javascript - JavaScript 中的 Deferred、Promise 和 Future 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 05:33:53 24 4
gpt4 key购买 nike

延期、 promise 和 future 之间有什么区别?
这三个背后是否有一个普遍认可的理论?

最佳答案

这些答案,包括所选的答案,都有助于引入 promise 从概念上讲,但缺乏具体差异的具体内容使用库实现它们时出现的术语(并且有重要的区别)。

既然还是an evolving spec ,目前的答案来自尝试调查引用(如 wikipedia )和实现(如 jQuery ):

  • 延迟:流行引用文献中从未描述过, 1 2 3 4但通常被实现用作 Promise 解析的仲裁者(实现 resolvereject)。 5 6 7

    有时延迟也是 promise (实现 then), 5 6其他时候,仅使用 Deferred 被认为更纯粹能够解决,并迫使用户访问 promise 使用then 7

  • promise :对于正在讨论的策略来说,最包罗万象的词。

    存储目标函数结果的代理对象,其我们想要抽象同步性,并公开一个 then 函数接受另一个目标函数并返回一个新的 promise 。 2

    示例来自 CommonJS :

    > asyncComputeTheAnswerToEverything()
    .then(addTwo)
    .then(printResult);
    44

     

    尽管从未具体说明,但始终在流行引用文献中进行描述责任决议落在谁的身上。 1 2 3 4

    始终出现在流行的实现中,并且从未给出分辨率能力。 5 6 7

  • future :一些流行引用文献中看似已弃用的术语 1以及至少一种流行的实现, 8但似乎已逐渐退出讨论,转而使用该术语' promise ' 3并且在该主题的流行介绍中并不总是提及。 9

    但是,至少有一个库通用地使用该术语来进行抽象同步性和错误处理,但不提供 then 功能。 10目前尚不清楚回避“ promise ”一词是否是有意为之,但可能是这是一个不错的选择,因为 Promise 是围绕“thenables”构建的。 2

引用文献

  1. Wikipedia on Promises & Futures
  2. Promises/A+ spec
  3. DOM Standard on Promises
  4. DOM Standard Promises Spec WIP
  5. DOJO Toolkit Deferreds
  6. jQuery Deferreds
  7. Q
  8. FutureJS
  9. Functional Javascript section on Promises
  10. Futures in AngularJS Integration Testing

其他可能令人困惑的事情

关于javascript - JavaScript 中的 Deferred、Promise 和 Future 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com