red*_*off 8 javascript chaining promise chain bluebird
Promise.all()不保证承诺将按顺序解决.如何才能做到这一点?
由于您使用的是Bluebird JS,因此实际上可以通过简单的方式完成.
在2.0版本中,Bluebird引入了Promise.each执行此操作的方法,因为循环a非常简单,但由于它很常见并且一次又一次地请求,最终它被添加为自己的方法.
function foo(item, ms){ // note bluebird has a delay method
return Promise.delay(ms, item).then(console.log.bind(console))
}
var items = ['one', 'two', 'three'];
Promise.each(items, function(item, i){
return foo(item, (items.length - i) * 1000)
});
Run Code Online (Sandbox Code Playgroud)
这产生与其他答案相同的结果,只有较少的代码行,并且它还允许Bluebird在迭代上执行优化.