nop*_*ole 5 javascript es6-promise
我可以找到一些博客文章说 JavaScript ES6 的承诺是 Promise/A+,但是官方的 ES6 规范没有提到它,并且MDN 在最底部有一个指向 Promise/A+ 的链接,但没有说明 ES6 JavaScript 的承诺与 Promise/A+ 完全相同。
有时它被表述为“ES6 promise基于Promise/A+”,但它们完全一样吗?(是否在官方文档中提及,例如来自 ECMA 或 MDN?)
它们并不相同,但 JavaScript 的承诺完全符合 Promises/A+ 规范。
Promises/A+ 是有意的极简主义。JavaScript 的 Promise 具有 Promises/A+ 规范未涵盖的实用功能(例如catch和finally)。不过,这些仅使用 Promises/A+ 涵盖的功能实现。例如,通过调用catch和finally实现then。(字面意思,而不仅仅是概念上。)例如,如果您查看规范catch,它catch的字面意思是这样的:
class Promise {
// ...
catch(onRejected) {
return this.then(undefined, onRejected);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
(finally有点复杂,但它最终也会调用then并返回它创建的承诺。)
JavaScript 的承诺也有偶尔的优化,只有在使用原生承诺(而不是来自第三方库的承诺)时才有效,但同样,它们完全符合 Promises/A+。
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |