2013-05-14 37 views
12

我使用Q承諾庫。我的代碼依賴於單個承諾回調中,因爲他們註冊了相同的順序執行的事實。Q承諾:在相同的順序調用回調函數作爲註冊?

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(); 

這不產生正確的結果,但我不知道這是否是規範還是一個令人高興的巧合,可能打破線的一部分。

回答

11

Promises/A+ Spec

2.2.6.1

如果/當promise滿足,相應的onFulfilled回調必須在其發起的順序執行調用then

+4

事實上,這個名字'Q'故意意味着它是一個事件*隊列*的接口。 –