Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie erreicht man eine asynchrone Verkettung in einer JavaScript ES6 Promise for-Schleife?

Barbara Streisand
Freigeben: 2024-11-22 11:52:12
Original
746 Leute haben es durchsucht

How to Achieve Asynchronous Chaining in a JavaScript ES6 Promise for Loop?

JavaScript ES6 Promise for-Schleife mit asynchroner Verkettung

Im bereitgestellten Code wird versucht, eine for-Schleife zu erstellen, die zehnmal iteriert und für jedes ein Versprechen erstellt Iteration. Allerdings wird die Schleife synchron ausgeführt, was zu einer unvorhersehbaren Ausgabe führt. Das Ziel besteht darin, sicherzustellen, dass jedes Versprechen erst ausgeführt wird, nachdem das vorherige aufgelöst wurde.

Promisifying setTimeout

Um die Lösung zu erleichtern, definieren wir eine Hilfsfunktion namens Verzögerung, die die setTimeout-Funktion verspricht:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
Nach dem Login kopieren

Asynchronous erstellen Versprechen

Um eine asynchrone Ausführung sicherzustellen, erstellen wir ein anfängliches Versprechen, das sofort aufgelöst wird. Jedes nachfolgende Versprechen ist mit dem vorherigen verkettet:

let p = Promise.resolve();
for (let i = 0; i < 10; i++) {
    p = p.then(() => delay(Math.random() * 1000))
         .then(() => console.log(i));
}
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass jede Schleifeniteration ein Versprechen erstellt, das nach Abschluss des vorherigen Versprechens aufgelöst wird. Die Anweisung console.log(i) wird in der richtigen Reihenfolge ausgeführt und gibt die Werte von 0 bis 9 aus.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine asynchrone Verkettung in einer JavaScript ES6 Promise for-Schleife?. 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