Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Linda Hamilton
Freigeben: 2024-11-03 00:13:29
Original
1029 Leute haben es durchsucht

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>
Nach dem Login kopieren

Beispielverwendung

<code class="javascript">// Compose an array of email addresses
var arrayOfEmailAddys = [...];

fetchUserDetails(arrayOfEmailAddys).then(function() {
    console.log('all done');
});</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage