【问题标题】:What's the difference between Promise/A+ specification and ECMA spec's Promise section?Promise/A+ 规范和 ECMA 规范的 Promise 部分有什么区别?
【发布时间】:2019-04-20 08:04:04
【问题描述】:

ECMA Script 已经对 Promise 有一个定义,那么 Promise/A+ 退出有什么原因吗?

【问题讨论】:

  • 它的存在是因为“已经”,虽然现在是正确的,但在编写 A+ 规范时不是正确的。原生 Promise 是一个相对较新的功能。
  • @jonrsharpe 如果我想编写自己的 Promise obj,我应该遵循哪个规范?
  • @saltfish 两者都试一下,看看哪个最适合你……只有一种方法可以找出答案,那就是尝试。
  • A+ 有一个test conformance suite,您可以使用它来测试您的实现。不确定 ECMAScript 是否有专门的。
  • 如果有兴趣,您可以查看我个人记录的attempt,关于基于原始 Promise/A+ 规范(在 ES6 之前存在)实现 Promise 对象,并在代码 cmets。

标签: javascript es6-promise


【解决方案1】:

其实是反过来的。 Promise/A+ 规范首先编写,然后使用 bluebird 和其他库在 JS 中实现。然后,ECMA 规范的作者看到了原生支持它的需求,并将其添加到 ES 6 规范中。它们之间没有真正的区别,因为 ES 规范遵循 A+ 规范。 source

【讨论】:

  • 原生承诺是一致的,这并不意味着没有差异。例如,虽然它们支持 thenable 接口,但原生 Promise 也是可捕获的。
猜你喜欢
  • 2015-06-08
  • 2018-03-12
  • 2016-08-24
  • 2010-12-25
  • 1970-01-01
  • 2011-04-01
  • 2015-08-28
  • 2017-04-29
相关资源
最近更新 更多