javascript - 如何使用 bluebirdjs 按顺序链接 promise ?

标签 javascript promise chaining chain bluebird

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/

相关文章:

c++ - 同一对象的链接方法

java - 方法链接的优点和缺点以及用对象本身替换所有 void 返回参数的可能性

javascript - 加载外部脚本时锁定浏览器

javascript - StrictNullChecks 与通过语法的联合类型

javascript - Node.js promise 和异步异常

angularjs - 为什么我在测试 promise 内的代码时会丢失调用上下文( Angular + Jasmine )

javascript - 表格行作为 HTML 中的计数器

javascript - 我可以使用服务器端 Javascript 在 Razor 中编写 View 代码吗?

javascript - Node.JS 递归 promise 无法解析

java - 在 Java 8 中使用先前链接的 thenCompose lambda 的值