2017-03-03 113 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

謝謝救星! –