5
我想依序執行一些基於數組的異步函數。使用承諾順序執行函數
我認爲這將做到這一點:
var Promise = require("bluebird");
Promise.cast([1,2,3]).reduce(function(_,i){
console.log("Launching " + i);
return Promise.delay(Math.floor(Math.random()*1000)).then(function(){
console.log("Executing " + i);
});
},0);
,但我得到
Launching 1
Launching 2
Launching 3
Executing 2
Executing 1
Executing 3
,而不是預期的結果這將是
Launching 1
Executing 1
Launching 2
Executing 2
Launching 3
Executing 3
如何確保完全順序執行這裏 ?
請注意,我知道如何做到這一點,沒有承諾,我只對完全承諾的解決方案感興趣。
是的,升級Bluebird到1.0.8修復了這個問題。 –
如果有人正在閱讀本文並且被卡住在Bluebird的