Gleichzeitige Handhabung mehrerer asynchroner Vorgänge
In Szenarien, in denen eine Folge asynchroner Vorgänge (dargestellt als Versprechen) ausgeführt wird, ist es notwendig, dies zu bestimmen wenn alle diese Vorgänge abgeschlossen sind, bevor Sie mit den nachfolgenden Aufgaben fortfahren. Dieser Artikel bietet eine Lösung für diese Herausforderung durch Nutzung der Promise.all()-Methode.
Wie Sie bereits erwähnt haben, führt die Funktion doSomeAsyncStuff() asynchrone Aufgaben aus. Indem wir es so ändern, dass es ein Versprechen zurückgibt, können wir den Abschlussstatus jeder asynchronen Operation erfassen. Dadurch können wir alle diese Promises in einem Array sammeln, das dann an Promise.all() übergeben wird.
Die Promise.all()-Methode akzeptiert ein Array von Promises als Parameter. Sobald alle Promises im Array entweder aufgelöst oder abgelehnt wurden, gibt Promise.all() ein einzelnes Promise zurück. Dieses einzelne Versprechen wird in ein Array der Ergebnisse (oder Ablehnungsgründe) der einzelnen Versprechen aufgelöst.
In Ihrem Code können Sie dies implementieren, indem Sie die folgenden Schritte integrieren:
const promises = []; // Create a Promise for each asynchronous operation for (let i = 0; i < 5; i++) { promises.push(doSomeAsyncStuff()); } // Use Promise.all to wait for all the Promises to resolve Promise.all(promises) .then(() => { // All asynchronous operations have completed. Execute subsequent tasks here. for (let i = 0; i < 5; i++) { doSomeStuffOnlyWhenTheAsyncStuffIsFinish(); } }) .catch((e) => { // Handle any errors that occurred during the asynchronous operations. });
Von Mithilfe von Promise.all() können Sie effektiv sicherstellen, dass alle asynchronen Vorgänge erfolgreich abgeschlossen wurden, bevor Aufgaben ausgeführt werden, die von ihren Ergebnissen abhängen.
Weitere Informationen Zur Verdeutlichung siehe das bereitgestellte 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();
In diesem Beispiel definieren wir eine asynchrone Funktion doSomethingAsync(), die mit einer zufälligen Verzögerung aufgelöst wird. Wir erstellen ein Array von Versprechen und warten mit Promise.all() darauf, dass alle aufgelöst werden. Sobald alle erfolgreich abgeschlossen wurden, können wir mit unseren nachfolgenden Aufgaben fortfahren.
Das obige ist der detaillierte Inhalt vonWie kann Promise.all() mehrere gleichzeitige asynchrone Vorgänge verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!