循环异步调用并加入返回的promise
Loop asynchronous call and join the returned promise
我正在开发我的第一个使用 bluebird 的 nodejs 应用程序。我需要在 for 循环中调用一个异步方法,每个调用 returns 一个承诺。我想将所有这些承诺结合在一起,我该如何实现。非常感谢任何帮助。
我正在从 mongodb 中检索文档集,我需要遍历返回的文档集并将一个字段作为参数传递给 returns 承诺的异步方法。由于我在循环中执行此操作,因此我需要一种方法将所有这些承诺组合成一个承诺。
您可以使用 .all()
方法:http://bluebirdjs.com/docs/api/promise.all.html
示例:
var promises = [];
for (var i = 0; i < 100; ++i) {
promises.push(yourPromise);
}
Promise.all(promises).then(function(values) {
// All your promises are resolved
// Promises results are stored in values argument
console.log(values);
});
Promise.all([promise 1,promise 2,promise 3]).then(data=>{
console.log(data);
});
After executing all these
data[0] contains promise 1 result,
data[1] contains promise 2 result,
data[2] contains promise 3 result
注意:如果至少有一项承诺失败或被拒绝,Promise.all() 将失败。
我正在开发我的第一个使用 bluebird 的 nodejs 应用程序。我需要在 for 循环中调用一个异步方法,每个调用 returns 一个承诺。我想将所有这些承诺结合在一起,我该如何实现。非常感谢任何帮助。
我正在从 mongodb 中检索文档集,我需要遍历返回的文档集并将一个字段作为参数传递给 returns 承诺的异步方法。由于我在循环中执行此操作,因此我需要一种方法将所有这些承诺组合成一个承诺。
您可以使用 .all()
方法:http://bluebirdjs.com/docs/api/promise.all.html
示例:
var promises = [];
for (var i = 0; i < 100; ++i) {
promises.push(yourPromise);
}
Promise.all(promises).then(function(values) {
// All your promises are resolved
// Promises results are stored in values argument
console.log(values);
});
Promise.all([promise 1,promise 2,promise 3]).then(data=>{
console.log(data);
});
After executing all these
data[0] contains promise 1 result,
data[1] contains promise 2 result,
data[2] contains promise 3 result
注意:如果至少有一项承诺失败或被拒绝,Promise.all() 将失败。