Cui*_*崔鹏飞 7 javascript event-loop promise es6-promise
promise/a +规范第2.2.4条规定:
在执行上下文堆栈仅包含平台代码之前,不得调用onFulfilled或onRejected.
然后在笔记中说明:
这里的"平台代码"意味着引擎,环境和承诺实现代码.实际上,这个要求确保onFulfilled和onRejected异步执行,然后调用事件循环,然后调用新堆栈.
这样做的目的是确保当链中存在大量onFulfilled函数时,它们的执行不会导致线程阻塞吗?
或者在我不读的行之间还有其他什么东西吗?
其理由是,当回调是永远异步,而不是可能是异步的,它提供了更多的一致和可靠的API使用.请考虑以下代码
var pizza;
browseStackOverflow().then(function(){
eatPizza(pizza);
});
pizza = yesterdaysLeftovers;
Run Code Online (Sandbox Code Playgroud)
现在该片段明确假设onFulfilled不会立即调用,如果情况并非如此,我们很快就会有未使用过的披萨,我们会感到饥饿.虽然在这种情况下错误很容易修复,但执行的顺序更容易遵循,因此当您可以做出这样的假设时,api更容易使用.
在Promises/A + GitHub回购中有一个封闭的问题,并讨论了这个问题.
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |