2017-03-03 1 views
-1

Ich arbeite an meiner ersten nodejs-Anwendung, die Bluebird verwendet. Ich muss eine asynchrone Methode in einer for-Schleife aufrufen, die für jeden Aufruf ein Versprechen zurückgibt. Ich möchte all diese Versprechen zusammenbringen, wie kann ich das erreichen? Jede Hilfe wird sehr geschätzt.Schleifen Sie asynchronen Anruf und verbinden Sie das zurückgegebene Versprechen

Ich bin eine Reihe von Dokumenten von Mongodb abrufen und ich muss durch die zurückgegebene Menge von Dokumenten durchlaufen und ein Feld als Parameter an eine asynchrone Methode übergeben, die eine Zusage zurückgibt. Da ich dies in der Schleife mache, brauche ich eine Möglichkeit, all diese Versprechen in einem einzigen Versprechen zu vereinen.

+0

Sie werden immer eine bessere und spezifischere erhalten Antwort taylored auf Ihre Situation, wenn Sie Ihren entsprechenden Code enthalten. Wahrscheinlich, weil Sie Bluebird verwenden, können Sie einige ihrer raffinierten Funktionen (wie 'Promise.map()', um Ihren Code zu vereinfachen, aber wir können nicht sicher sagen, bis Sie Ihren tatsächlichen Code enthalten. Fragen über Code sollte immer enthalten etwas von deinem Code – jfriend00

Antwort

1

können Sie die .all() Methode verwenden: http://bluebirdjs.com/docs/api/promise.all.html

Beispiel:

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

Danke Retter !!! –

Verwandte Themen