Q promise:是否以与注册相同的顺序调用回调?

Ili*_*oly 12 javascript promise q

我正在使用Q promise库.我的代码依赖于单个promise的回调按照它们注册的顺序执行的事实.

http://jsfiddle.net/HgYtK/1/

var deferred = Q.defer();
var promise = deferred.promise;

['first', 'second', 'third'].forEach(function (position) {
  promise.then(function () {
    alert(position);
  });
});

deferred.resolve();
Run Code Online (Sandbox Code Playgroud)

这确实产生了正确的结果,但我不知道它是否是规范的一部分或者是一个可以打破界限的幸福巧合.

Ili*_*oly 11

来自Promises/A + Spec

2.2.6.1

如果/ when promise满足,则相应的onFulfilled回调必须按其始发呼叫的顺序执行then.

  • 事实上,名称`Q`故意暗示它是事件*队列*的接口. (4认同)