2017-03-03 68 views
-1

我正在使用蓝鸟的第一个nodejs应用程序。我有一个要求在for循环中调用一个异步方法,它为每个调用返回一个承诺。我想将所有这些承诺结合在一起,我怎样才能做到这一点。任何帮助深表感谢。循环异步调用并加入返回的承诺

我从mongodb中检索一组文档,我需要遍历返回的一组文档,并将字段作为参数传递给返回承诺的异步方法。因为我在循环中这样做,我需要一种将所有这些承诺结合到一个单一承诺中的方法。

+0

你总是会得到一个更好,更具体的回答taylored到你的特殊情况,如果您包括您的相关代码。可能因为你使用的是蓝鸟,你可以使用一些漂亮的函数(比如'Promise.map()'来简化你的代码,但是在你包含实际代码之前我们无法确定。一些你的代码。 – jfriend00

回答

1

可以使用.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); 
}); 
+0

谢谢救星! –