Promise.all() 不保证 Promise 会按顺序解决。如何做到这一点?
最佳答案
由于您使用的是 Bluebird JS,这实际上可以通过简单的方式完成。
在 2.0 版本中,Bluebird 引入了执行此操作的 Promise.each
方法,因为循环 then 非常简单,但由于它非常常见并且一次又一次地被请求,最终它被添加为自己的方法。
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)
});
这会产生与其他答案相同的结果,只是代码行数较少,并且还允许 Bluebird 对迭代执行优化。
关于javascript - 如何使用 bluebirdjs 按顺序链接 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26845999/