承诺/A+规范第2.2.4条的意图是什么
What is the intention behind clause 2.2.4 of Promise/A+ spec?
承诺/a+规范第2.2.4条规定:
onFulfilled或onRejected必须在执行之前才能调用上下文堆栈仅包含平台代码。
然后在注释中指出:
这里的"平台代码"指的是引擎、环境和承诺实现代码。在实践中,此要求确保onFulfilled和onRejected在事件之后异步执行循环循环,然后调用,并使用新堆栈。
这样做的目的是确保当链中有大量onFulfilled函数时,它们的执行不会导致线程阻塞吗?
或者,字里行间还有什么我没有读到的东西吗?
原因是,当回调总是异步而不是可能异步时,它提供了更一致和可靠的api。考虑以下代码
var pizza;
browseStackOverflow().then(function(){
eatPizza(pizza);
});
pizza = yesterdaysLeftovers;
现在,这个片段清楚地假设onFulfilled
不会立即被调用,如果不是这样的话,我们很快就会有闲置的披萨,我们就会饿了。尽管在这种情况下,这个错误很容易修复,但执行顺序更容易遵循,因此当你可以做出这样的假设时,api更容易使用。
Promises/a+GitHub回购存在一个已结束的问题,对此进行了讨论。
相关文章:
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- PHP进度条可以使用$_SESSION
- 禁用(而不是隐藏)浏览器滚动条
- 动画CSS进度条
- 在地图上画一条路线
- 使用jQuery计算数组中的对象以更改进度条
- 在firefox和chrome中的左侧显示iframe滚动条
- 带有计数器、缩略图、进度条和淡入淡出效果的简单jQuery幻灯片
- jquery:将动画绑定到滚动条位置的更好方法
- 如何使用jqueryui进度条
- 在窗口中添加滚动条
- 如何平滑地设置twitter引导程序进度条的动画
- 检测滚动意图
- 是否可以创建一个带有进度条的跨浏览器AJAX照片上传器
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 使用没有插件的javascript自定义滚动条
- 在d3中拖动一条线
- Twitter API JSON调用未获得最新的3条推文
- CodeMirror.禁用垂直滚动条
- 承诺/A+规范第2.2.4条的意图是什么