Rumah > hujung hadapan web > tutorial js > Menggunakan Promise.all()

Menggunakan Promise.all()

Mary-Kate Olsen
Lepaskan: 2025-01-21 00:30:11
asal
873 orang telah melayarinya

Memanfaatkan Promise.all()

Gunakan sekali await untuk menunggu berbilang proses tak segerak.

Salah satu kekuatan JavaScript ialah keupayaannya untuk melaksanakan operasi tak segerak untuk mengelakkan proses menunggu antara satu sama lain. Dalam aplikasi praktikal, operasi tak segerak sering digunakan untuk proses yang masa menunggunya bergantung pada faktor luaran, seperti sambungan rangkaian, kelajuan storan, dsb. Berikut ialah beberapa contoh operasi tak segerak:

  • Pertanyaan pangkalan data
  • Dapatkan data daripada tapak web lain (permintaan HTTP)
  • Baca dan tulis fail
  • Hantar e-mel

Pelaksanaan fungsi tak segerak

Dalam JavaScript, operasi tak segerak biasanya dilaksanakan menggunakan fungsi. Fungsi ialah satu set blok kod yang melaksanakan tugas tertentu, seperti fungsi tambahan untuk mengira jumlah dan fungsi penutupan untuk mematikan komputer (mungkin ada fungsi sedemikian?).

Tentukan fungsi

Untuk mentakrifkan fungsi tak segerak, cuma tambahkan kata kunci async apabila fungsi itu diisytiharkan, dan selebihnya adalah sama seperti fungsi biasa.

Sebagai contoh, kami mentakrifkan fungsi untuk menghantar e-mel secara tidak segerak:

<code class="language-javascript">async function kirimEmail(tujuan, judul, isi) {
  // 发送邮件
  // ...
}</code>
Salin selepas log masuk

Atau gunakan fungsi anak panah:

<code class="language-javascript">const kirimEmail = async (tujuan, judul, isi) => {
  // 发送邮件
  // ...
}</code>
Salin selepas log masuk

Fungsi panggilan

Apabila fungsi di atas dipanggil, ia secara automatik akan melaksanakan secara tidak segerak, yang bermaksud tiada masa menunggu antara satu sama lain.

Contohnya:

<code class="language-javascript">kirimEmail('contoh1@email.com', 'Tes 1 Email', 'Halo. Ini saya lagi ngetes.');
kirimEmail('contoh2@email.com', 'Tes 2 Email', 'Halo. Ini saya lagi ngetes.');
kirimEmail('contoh3@email.com', 'Tes 3 Email', 'Halo. Ini saya lagi ngetes.');</code>
Salin selepas log masuk

Dalam contoh di atas, semua proses yang menghantar e-mel dilaksanakan mengikut urutan, tetapi tiada satu proses menunggu untuk diselesaikan. Oleh itu, proses seterusnya akan dimulakan manakala proses sebelumnya tidak selesai dan tidak akan menghalang satu sama lain.

Jika anda perlu mendapatkan data atau menunggu proses tak segerak selesai, anda boleh menggunakan kata kunci await semasa memanggil fungsi.

Contohnya:

<code class="language-javascript">await kirimEmail('contoh1@email.com', 'Tes 1 Email', 'Halo. Ini saya lagi ngetes.');
await kirimEmail('contoh2@email.com', 'Tes 2 Email', 'Halo. Ini saya lagi ngetes.');
await kirimEmail('contoh3@email.com', 'Tes 3 Email', 'Halo. Ini saya lagi ngetes.');</code>
Salin selepas log masuk

Dalam contoh ini, setiap proses akan menunggu sehingga proses sebelumnya selesai. Ini biasanya berlaku apabila data perlu diambil dari satu proses untuk proses seterusnya, jadi seseorang itu perlu menunggu proses sebelumnya selesai sebelum mengambil data yang diperlukan.

Janji.semua()

Menggunakan Promise.all, kita boleh memanggil dan menunggu berbilang fungsi tak segerak pada masa yang sama.

Fungsi panggilan

Contoh penggunaan Promise.all untuk memanggil berbilang fungsi tak segerak adalah seperti berikut:

<code class="language-javascript">await Promise.all([
  kirimEmail('contoh1@email.com', 'Tes 1 Email', 'Halo. Ini saya lagi ngetes.'),
  kirimEmail('contoh2@email.com', 'Tes 2 Email', 'Halo. Ini saya lagi ngetes.'),
  kirimEmail('contoh3@email.com', 'Tes 3 Email', 'Halo. Ini saya lagi ngetes.'),
]);</code>
Salin selepas log masuk

Dalam contoh di atas, kami menunggu selesainya tiga proses penghantaran mel, dan hasilnya akan dikembalikan dalam bentuk tatasusunan tanpa mengira kejayaan atau kegagalan.

Ciri

Promise.all mempunyai ciri-ciri berikut:

  • Fungsi tak segerak yang akan dilaksanakan diletakkan dalam tatasusunan
  • Semua fungsi dilaksanakan secara keseluruhan, dari permulaan hingga selesai;
  • Memandangkan ia berfungsi secara keseluruhan, semua proses akan menunggu sehingga selesai, terutamanya jika
  • digunakan; awaitJika ralat berlaku dalam salah satu proses, semua proses akan melaporkan ralat.
  • Sila rujuk dokumentasi
MDN untuk butiran lanjut.

Kesimpulan

Menggunakan Promise.all sangat mudah, kita hanya perlu menulis await sekali, dan ia juga berguna jika kita ingin menghentikan semua proses jika salah satu daripadanya ralat. Walau bagaimanapun, jika kita ingin terus melaksanakan proses lain walaupun satu proses gagal, kita akan membincangkan perkara ini dalam artikel seterusnya.

Terima kasih kerana membaca. Jika anda ingin berbincang, sila tinggalkan mesej. Jika anda ingin berkawan, sila beritahu saya ?

Atas ialah kandungan terperinci Menggunakan Promise.all(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan