我正在使用Kriskowal Q library來處理承諾。解決與Q.all同步的承諾(承諾)
我寫了下面的函數,等到所有的promise都解決了。
function multiplePromises(targetArray) {
var promises = {};
for (var i=0; i<targetArray.length; i++) {
var promise = singlePromise(); // any async. function
promises[i] = promise;
};
return Q.all(promises);
};
和我稱之爲如下:(?例如是同步的)
multiplePromises(targetArray).then(
function(success){
console.log("success");
},
function(error){
console.log("error", error);
}
);
我想知道然而是否存在其中的承諾被解析的順序。即該功能是否等待觸發下一個承諾i+1
,直到承諾i
得到解決?或者,它與其他所有異步一樣。方法,它實際上觸發了所有單一的承諾,只是等到它們全部完成了?
如果第二種情況下,如何重寫此函數以確保承諾i+1
只有在承諾i
已解決時纔會觸發?
更新:測試
我做了一個測試,把:
promises[i] = i;
,以檢查它是否解決sycnhronously,它似乎如此。但是,這可能只是我的異步函數足夠快而能夠快速地解決它。這看起來正確嗎?
什麼sycnhronously'我想你的意思'serially' - 因爲有絕對沒有同步關於承諾 –
清除。任何想法如何使它「連續」? – JohnAndrews
是的,很容易,如果我只知道'Promise.resolve()'Q'相當於'' –