Problemstellung
Wie können wir sicherstellen, dass eine Schleife synchron iteriert und jede Iteration ausführt? Promise und seinen nachfolgenden Protokollierungsvorgang (logger.log(res)) in der richtigen Reihenfolge?
Lösung
Eschewing PromiseWhile
Während die Funktion „promiseWhile“ das Schleifen mit Versprechen erleichtern kann, garantiert sie nicht die Ausführungsreihenfolge für verkettete Vorgänge.
Reduzieren für die Serialisierung verwenden
Um das Gewünschte beizubehalten In dieser Reihenfolge können wir Array.prototype.reduce() nutzen, um eine flache Kette von .then()-Operationen zu erstellen. Dadurch entfällt die Notwendigkeit einer Rekursion.
<code class="javascript">function fetchUserDetails(arr) { return arr.reduce(function(promise, email) { return promise.then(function() { return db.getUser(email).done(function(res) { logger.log(res); }); }); }, Promise.resolve()); }</code>
Beispielverwendung
<code class="javascript">// Compose an array of email addresses var arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
Vorteile
Dieser Ansatz eliminiert die In der PromiseWhile-Methode sind zusätzliche Variablen und Bedingungsfunktionen erforderlich. Darüber hinaus vereinfacht es den Code und stellt die korrekte Reihenfolge der Versprechensausführungen sicher.
Das obige ist der detaillierte Inhalt vonWie kann die Ausführung einer synchronen Schleife mit Promise-Operationen sichergestellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!