Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Barbara Streisand
Freigeben: 2024-11-03 00:22:29
Original
574 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage