Heim  >  Artikel  >  Web-Frontend  >  Behält „Promise.all“ die Reihenfolge der aufgelösten Werte bei?

Behält „Promise.all“ die Reihenfolge der aufgelösten Werte bei?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 00:22:29575Durchsuche

Does `Promise.all` Preserve the Order of Resolved Values?

Promise.all: Reihenfolge der aufgelösten Werte

In JavaScript ist Promise.all darauf ausgelegt, die Funktionalität von Versprechen zu verbessern, indem es die Auflösung ermöglicht von mehreren Versprechen gleichzeitig. Ein wichtiger Aspekt von Promise.all ist die Reihenfolge, in der aufgelöste Werte an seinen Rückruf übergeben werden.

Laut MDN-Dokumentation sollte die Reihenfolge der aufgelösten Werte der Reihenfolge der Versprechen im Eingabearray entsprechen. Das bedeutet, dass der Wert des ersten aufzulösenden Versprechens zuerst im Ergebnisarray platziert wird, das an den then()-Rückruf übergeben wird.

Um dies zu bestätigen, werfen wir einen Blick auf die JavaScript Promise-Spezifikation. Im Abschnitt „Promise.all (iterable)“ finden Sie die Schritte zum Auflösen einer Iteration von Versprechen in ein einziges Versprechen. Das entscheidende Detail liegt in Schritt 4e, bei dem für jedes gelöste Versprechen ein interner [[Index]]-Slot erstellt wird. Dieser Slot markiert explizit den Index des Versprechens im ursprünglichen Eingabearray.

Daher stellt die Promise.all-Implementierung sicher, dass bei der gleichzeitigen Auflösung mehrerer Versprechen die Ausgabe streng auf der Grundlage der Reihenfolge der Versprechen in der Eingabe geordnet wird Array. Diese Beibehaltung der Reihenfolge gilt, solange das Eingabearray eine konsistente Reihenfolge beibehält (z. B. ein Array).

Um dies zu veranschaulichen, betrachten Sie den folgenden Code:

<code class="js">const somePromises = [1, 2, 3, 4, 5].map(Promise.resolve);
Promise.all(somePromises).then(function(results) {
  console.log(results); // Expected result: [1, 2, 3, 4, 5]
});</code>

Wenn dieser Code ausgeführt wird, werden die aufgelösten Werte in der Reihenfolge der Versprechen im Array somePromises in der Konsole protokolliert. Dies demonstriert die Auftragserhaltungsfunktion von Promise.all.

Das obige ist der detaillierte Inhalt vonBehält „Promise.all“ die Reihenfolge der aufgelösten Werte bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn