Heim > Artikel > Web-Frontend > Wie kann ich asynchrone Aufrufe in JavaScript mit „async/await' parallelisieren?
Parallelisierung asynchroner Aufrufe mit Warten
Bei Verwendung der in ES7 eingeführten Async/Await-Syntax ist es wichtig zu verstehen, dass mehrere Wait-Anweisungen ausgeführt werden sequentiell statt parallel. Das bedeutet, dass das Warten auf ein Ergebnis in einem Funktionsaufruf die Ausführung anhält, bis der vorherige Aufruf abgeschlossen ist. Um dies zu vermeiden, gibt es mehrere Möglichkeiten.
Eine der einfachsten Methoden in Node.js ist die Nutzung der Promise.all()-Funktion. Mit Promise.all() können Sie ein einzelnes Versprechen erstellen, das aufgelöst wird, wenn alle bereitgestellten Versprechen aufgelöst werden, oder ablehnt, wenn eines von ihnen ablehnt. Indem Sie eine Reihe von Versprechen an Promise.all() übergeben, können Sie sicherstellen, dass alle gleichzeitig ausgeführt werden.
Hier ist ein Beispiel:
const someCall = () => new Promise((resolve) => setTimeout(() => resolve("some value"), 100)); const anotherCall = () => new Promise((resolve) => setTimeout(() => resolve("another value"), 200)); await Promise.all([someCall(), anotherCall()]) .then((results) => { const [someResult, anotherResult] = results; // Do something with the results. });
In diesem Beispiel sind beide someCall() und anotherCall() werden parallel ausgeführt und die Ergebnisse werden im Ergebnisarray verfügbar sein.
Ein alternativer Ansatz ist die Verwendung der asynchronen Bibliothek, die zusätzliche Funktionen für bereitstellt asynchrone Operationen. Mit der Funktion async.parallel() können Sie ein Array von Funktionen angeben, die parallel ausgeführt werden sollen, sowie einen Rückruf, der aufgerufen wird, sobald alle Funktionen abgeschlossen sind.
Hier ist ein Beispiel für die Verwendung von async.parallel():
const async = require("async"); const someCall = (callback) => setTimeout(() => callback(null, "some value"), 100); const anotherCall = (callback) => setTimeout(() => callback(null, "another value"), 200); async.parallel([someCall, anotherCall], (err, results) => { if (err) { // Handle any errors. } else { const [someResult, anotherResult] = results; // Do something with the results. } });
Sowohl Promise.all() als auch async.parallel() bieten zuverlässige Methoden zur parallelen Ausführung asynchroner Funktionen. Wählen Sie den Ansatz, der am besten zu Ihren Projektanforderungen und -präferenzen passt.
Das obige ist der detaillierte Inhalt vonWie kann ich asynchrone Aufrufe in JavaScript mit „async/await' parallelisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!