Heim >Web-Frontend >js-Tutorial >Wie kann die Ausführung angehalten werden, bis mehrere Versprechen gelöst sind?
Mehrere Versprechen zurückgeben und Ausführung anhalten, bis alles abgeschlossen ist
Sie müssen mehrere asynchrone Vorgänge mit einer Methode verarbeiten, die Versprechen zurückgibt. Nachdem diese Vorgänge abgeschlossen sind, möchten Sie erst dann einen weiteren Codesatz ausführen, wenn alle Versprechen aufgelöst wurden.
Versprechen in doSomeAsyncStuff()
Ihre Funktion doSomeAsyncStuff() muss dies tun ein Versprechen zurückgeben. Dieses Versprechen spiegelt den Abschluss der asynchronen Aufgabe wider:
function doSomeAsyncStuff() { return new Promise((resolve, reject) => { var editor = generateCKEditor(); editor.on('instanceReady', () => { doSomeStuff(); resolve(true); }); }); }
Verwenden von Promise.all()
Sobald Ihre asynchrone Funktion ein Promise zurückgibt, können Sie Promise verwenden. all(), um diese Versprechen zu einem einzigen zusammenzufassen Versprechen:
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((error) => { // Handle errors here });
Beispiel
Unten ist ein Beispiel, das eine Nachricht protokolliert, nachdem alle fünf asynchronen Aufgaben abgeschlossen wurden:
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((error) => { // Handle errors here }); } test();
Das obige ist der detaillierte Inhalt vonWie kann die Ausführung angehalten werden, bis mehrere Versprechen gelöst sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!