Heim >Web-Frontend >js-Tutorial >Wie kann die Ausführung einer synchronen Schleife mit Promise-Operationen sichergestellt werden?

Wie kann die Ausführung einer synchronen Schleife mit Promise-Operationen sichergestellt werden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 00:13:291069Durchsuche

How to Ensure Synchronous Loop Execution with Promise Operations?

Eine Schleife mit Versprechen koordinieren

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn