【发布时间】:2015-01-13 13:25:09
【问题描述】:
假设以下语句已按此顺序执行:
promiseA.then(function() { console.log('A1'); });
promiseB.then(function() { console.log('B'); });
promiseA.then(function() { console.log('A2'); });
现在promiseA 已满随后是 promiseB。
规范中有定义(this是最新的规范吗?)这三个回调的触发顺序是什么?
A1 总是会在A2 之前触发吗? (更新:是的,根据 this spec 的 2.2.6.1,正如 this answer 所指出的那样。)
A1/A2 是否总是在 B 之前触发(因为 A 先于 B 完成)?
【问题讨论】:
-
我相信
A1、A2、B是有保证的,但我不知道在哪里指定。 -
@Alnitak:是的,我也是,但我想在依赖它之前知道。
-
@JanMarthedalRasmussen:
I would like to know before relying on it,我建议不要依赖它。如果有一个必须执行的固有顺序,那么它们可能应该与.then链接在一起,而不是分开。 -
每个 promise 按照它们注册的顺序执行回调(是的,它在规范中)。不指定不同promise的回调执行顺序,取决于你在何时何地解决它们
-
@Alnitak:指定异步调用所有回调。他们都是。没有例外。
标签: javascript promise