Heim >Web-Frontend >js-Tutorial >Hier sind einige Titel im Fragestil, die zum bereitgestellten Artikel passen: * So erreichen Sie eine synchrone Ausführung mit Promise Chains: Ein Leitfaden für vereinfachte „promiseWhile'- und Array-Reduktionstechniken * S
So erstellen Sie synchrone Schleifen mit Promise-Ketten
Problem:
Konstruieren einer Schleife für Die Sicherstellung der synchronen Ausführung von Promise-Aufrufen und nachfolgenden Protokollierungsanweisungen kann eine Herausforderung darstellen. Dies gilt insbesondere bei der Verwendung von Bibliotheken wie Bluebird.
Lösung 1 (vereinfachte PromiseWhile-Funktion):
<code class="javascript">var Promise = require('bluebird'); var promiseWhile = function(condition, action) { var resolver = Promise.defer(); var loop = function() { if (!condition()) return resolver.resolve(); return Promise.cast(action()) .then(loop) .catch(resolver.reject); }; loop(); return resolver.promise; };</code>
Diese vereinfachte Version der PromiseWhile-Funktion erfordert die Übergabe von Rückrufen als Argumente für die Bedingungs- und Aktionsparameter.
Lösung 2 (Verwenden der Array-Reduktion):
Ein alternativer Ansatz besteht darin, ein Array von E-Mail-Adressen zu reduzieren und eine entsprechende Asynchronisierung vorzunehmen Aufruf für jeden:
<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>
Dieser Ansatz erstellt eine flache .then()-Kette und behält die ursprüngliche Reihenfolge der Antworten bei.
Verwendung:
Der Aufruf von fetchUserDetails erfordert ein Array von E-Mail-Adressen:
<code class="javascript">fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
Dieser Ansatz macht einen äußeren Zähler oder eine Bedingungsfunktion überflüssig. Das Limit wird durch die Länge des E-Mail-Arrays bestimmt.
Das obige ist der detaillierte Inhalt vonHier sind einige Titel im Fragestil, die zum bereitgestellten Artikel passen: * So erreichen Sie eine synchrone Ausführung mit Promise Chains: Ein Leitfaden für vereinfachte „promiseWhile'- und Array-Reduktionstechniken * S. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!