Rumah >hujung hadapan web >tutorial js >Adakah `Promise.all` Memelihara Susunan Nilai yang Diselesaikan?
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!