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>
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!