我希望能按照数组中的顺序依次执行一些异步函数。
我认为以下代码可以实现此功能:
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
我该如何确保这里完全按顺序执行?
请注意,我知道如何在没有 promises 的情况下做到这一点,我只对完全使用 promises 的解决方案感兴趣。
< v1
版本上,无法更新 - 请让我知道,我会添加一个< v1
的答案 - 否则,我宁愿不这样做,以便更多的人升级到现代的 Bluebird。 - Benjamin Gruenbaum