Rumah  >  Artikel  >  hujung hadapan web  >  Adakah `Promise.all` Memelihara Susunan Nilai yang Diselesaikan?

Adakah `Promise.all` Memelihara Susunan Nilai yang Diselesaikan?

Barbara Streisand
Barbara Streisandasal
2024-11-03 00:22:29575semak imbas

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

Promise.all: Order of Resolved Values

Dalam JavaScript, Promise.all direka untuk meningkatkan kefungsian janji dengan membenarkan resolusi pelbagai janji serentak. Satu aspek utama Promise.all ialah susunan nilai yang diselesaikan dihantar ke panggilan baliknya.

Menurut dokumentasi MDN, susunan nilai yang diselesaikan harus sepadan dengan susunan janji dalam tatasusunan input. Ini bermakna janji pertama untuk diselesaikan akan meletakkan nilainya dahulu dalam tatasusunan hasil yang dihantar ke panggil balik then().

Untuk mengesahkan ini, mari kita mendalami spesifikasi Janji JavaScript. Dalam bahagian "Promise.all (iterable)", kami dapati langkah-langkah untuk menyelesaikan janji yang boleh diubah menjadi satu Promise. Perincian penting terletak pada langkah 4e, yang melibatkan penciptaan slot [[Indeks]] dalaman untuk setiap janji yang diselesaikan. Slot ini secara eksplisit menandakan indeks janji dalam tatasusunan input asal.

Oleh itu, pelaksanaan Promise.all memastikan bahawa apabila menyelesaikan berbilang janji secara serentak, output disusun dengan ketat berdasarkan susunan janji dalam input tatasusunan. Pemeliharaan pesanan ini berlaku selagi tatasusunan input mengekalkan susunan yang konsisten (contohnya, tatasusunan).

Untuk menggambarkan ini, pertimbangkan kod berikut:

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

Apabila kod ini dilaksanakan, nilai yang diselesaikan akan dilog ke konsol dalam susunan janji dalam tatasusunan somePromises. Ini menunjukkan ciri pemeliharaan pesanan Promise.all.

Atas ialah kandungan terperinci Adakah `Promise.all` Memelihara Susunan Nilai yang Diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn