Heim > Web-Frontend > js-Tutorial > Hauptteil

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

DDD
Freigeben: 2024-11-04 05:22:29
Original
955 Leute haben es durchsucht

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

Promise.all: Reihenfolge aufgelöster Werte beibehalten

Die Promise.all()-Methode verwendet eine Iterable als Argument und gibt eine neue zurück Versprechen, das aufgelöst wird, sobald alle Versprechen im Iterable aufgelöst wurden. Es stellt sich die Frage: Stimmt die Reihenfolge der aufgelösten Werte garantiert mit der Reihenfolge der Versprechen im Iterable überein?

Laut der MDN-Dokumentation sollten die aufgelösten Werte in der Reihenfolge der Versprechen erscheinen. Ein direkter Verweis auf dieses spezifische Verhalten ist jedoch in der Spezifikation nicht sofort ersichtlich.

Wenn wir tiefer in die Spezifikation eintauchen, stellen wir fest, dass PerformPromiseAll() mit der an Promise.all() übergebenen Iterable aufgerufen wird. PerformPromiseAll() iteriert dann mit IteratorStep() über das Iterable, was die Reihenfolge der Versprechen garantiert.

Darüber hinaus verfügt jedes aufgelöste Versprechen über einen internen [[Index]]-Slot, der seinen Index im ursprünglichen Eingabe-Iterable angibt. Dieser Slot wird während des Auflösungsprozesses verwendet, um sicherzustellen, dass das Ausgabearray die ursprüngliche Reihenfolge beibehält.

Zusammenfassend lässt sich sagen, dass die Reihenfolge der aufgelösten Werte in Promise.all() so lange wie die Eingabe strikt beibehalten wird iterierbar ist bestellt. Dies wird im folgenden Codeausschnitt veranschaulicht:

<code class="js">const slow = new Promise(resolve => setTimeout(resolve, 200, 'slow'));
const instant = 'instant';
const quick = new Promise(resolve => setTimeout(resolve, 50, 'quick'));

Promise.all([slow, instant, quick]).then(responses => {
  responses.map(response => console.log(response));
});

// Output: [ 'instant', 'quick', 'slow' ]</code>
Nach dem Login kopieren

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage