Heim >Web-Frontend >js-Tutorial >Wie kann ich warten, bis mehrere JavaScript-Promises abgeschlossen sind, bevor ich fortfahre?
Problem:
Sie haben eine Reihe asynchroner Aufgaben (Versprechen). ) und müssen einen Codeblock erst ausführen, wenn alle ausgeführt wurden abgeschlossen.
Lösung:
Verwenden Sie Promise.all, um alle Versprechen in einem einzigen Array zu sammeln und auf deren Lösung oder Ablehnung zu warten.
Umsetzung:
const promises = []; for (let i = 0; i < 5; i++) { promises.push(doSomeAsyncStuff()); } Promise.all(promises) .then(() => { for (let i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } }) .catch((e) => { // Handle errors here });
Überarbeitet doSomeAsyncStuff-Funktion:
function doSomeAsyncStuff() { return new Promise((resolve, reject) => { const editor = generateCKEditor(); editor.on('instanceReady', (evt) => { doSomeStuff(); resolve(true); }) }); }
Beispiel:
function doSomethingAsync(value) { return new Promise((resolve) => { setTimeout(() => { console.log("Resolving " + value); resolve(value); }, Math.floor(Math.random() * 1000)); }); } function test() { const promises = []; for (let i = 0; i < 5; i++) { promises.push(doSomethingAsync(i)); } Promise.all(promises) .then((results) => { console.log("All done", results); }) .catch((e) => { // Handle errors here }); } test();
Das obige ist der detaillierte Inhalt vonWie kann ich warten, bis mehrere JavaScript-Promises abgeschlossen sind, bevor ich fortfahre?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!