Heim > Artikel > Web-Frontend > Garantiert Promise.all, dass die Reihenfolge der aufgelösten Werte mit der iterierbaren Eingabereihenfolge übereinstimmt?
Aufrechterhaltung der Ordnung in Promise.all
Promise.all ist eine JavaScript-Funktion, die eine Iteration von Versprechen entgegennimmt und ein einzelnes Versprechen zurückgibt, das aufgelöst wird Sobald alle Eingabeversprechen gelöst wurden. Es wird häufig verwendet, um auf den Abschluss mehrerer asynchroner Vorgänge zu warten, bevor fortgefahren wird.
Eine häufige Frage stellt sich: Stimmt die Reihenfolge der aufgelösten Werte im Ausgabeversprechen garantiert mit der Reihenfolge der Eingabeversprechen überein?
Der MDN-Dokumentation zufolge scheinen die an den then()-Rückruf von Promise.all übergebenen Werte in der Reihenfolge der Versprechen dargestellt zu werden. Diese Frage sucht nach Bestätigung durch die Spezifikation.
Die Promise.all-Spezifikation (https://tc39.github.io/ecma262/#sec-promise.all) besagt:
Wenn man diese Punkte kombiniert, wird klar, dass die Ausgabe von Promise.all immer strikt der Reihenfolge der iterierbaren Eingabe folgt. Das bedeutet, dass, wenn Sie ein Array an Promise.all übergeben, die aufgelösten Werte im Ausgabearray in derselben Reihenfolge erscheinen, in der sie im Eingabearray erschienen sind.
Um dies zu veranschaulichen, betrachten Sie das folgende Beispiel:
<code class="javascript">const promises = [1, 2, 3, 4, 5].map(Promise.resolve); Promise.all(promises).then((results) => { console.log(results); // [1, 2, 3, 4, 5] });</code>
In diesem Fall lautet die Ausgabe [1, 2, 3, 4, 5], unabhängig davon, welches Versprechen zuerst aufgelöst wird.
Das obige ist der detaillierte Inhalt vonGarantiert Promise.all, dass die Reihenfolge der aufgelösten Werte mit der iterierbaren Eingabereihenfolge übereinstimmt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!