问题
I'm using the Q promise library. My code relies on the fact that the callbacks for a single promise are executed in the same order as they were registered.
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();
This does produce the correct result, but I don't know if it's part of the spec or a happy coincidence that could break down the line.
回答1:
From the Promises/A+ Spec
2.2.6.1
If/when
promiseis fulfilled, respectiveonFulfilledcallbacks must execute in the order of their originating calls tothen.
来源:https://stackoverflow.com/questions/16550356/q-promise-are-callbacks-invoked-in-the-same-order-as-registered