Um mehrere asynchrone Vorgänge gleichzeitig auszulösen, vermeiden Sie die Verwendung des Musters, bei dem Sie Versprechen erwerben und dann nacheinander auf sie warten. Nutzen Sie stattdessen die Promise.all-Funktion:
const [value1, value2] = await Promise.all([getValue1Async(), getValue2Async()]);
Dieser Ansatz initiiert beide asynchronen Vorgänge gleichzeitig und stellt die Ergebnisse in einem Array bereit.
Die bereitgestellten Die Lösung führt die Vorgänge parallel aus, wartet jedoch, bis der erste abgeschlossen ist, bevor sie auf den zweiten wartet. Dies ermöglicht zwar eine parallele Ausführung, führt jedoch zu Problemen bei der Handhabung abgelehnter Versprechen.
Wenn die Ausführung des ersten Versprechens länger dauert und das zweite fehlschlägt, schlägt Promise.all sofort fehl, wodurch verhindert wird, dass das erste Versprechen abgelehnt wird. Dies kann zu einem unbehandelten Ablehnungsfehler führen.
Derzeit gibt es keine bestimmte Warte-Syntax für paralleles Warten, daher die Alternative, Promise.all zu verwenden. Es sind Diskussionen zu „await.all“ entstanden, die auf die Möglichkeit zukünftiger Verbesserungen hinweisen.
Betrachten Sie das folgende Beispiel, bei dem die Auflösung von getValue1Async 500 ms und die Ablehnung von getValue2Async 100 ms dauert:
Sequentiell Ausführung:
async () => { try { const value1 = await getValue1Async(); const value2 = await getValue2Async(); } catch (e) { console.error(e); } };
Gleichzeitige Ausführung mit Promise.all:
async () => { try { const [value1, value2] = await Promise.all([getValue1Async(), getValue2Async()]); } catch (e) { console.timeEnd("Promise.all", e); } };
Ausgabe:
Schlussfolgerung:
Die Verwendung von Promise.all ermöglicht effektiv die parallele Ausführung asynchroner Vorgänge und stellt die ordnungsgemäße Handhabung abgelehnter Versprechen sicher.
Das obige ist der detaillierte Inhalt vonWie kann Promise.all die Handhabung gleichzeitiger asynchroner Vorgänge verbessern und unbehandelte Ablehnungen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!