Sebelum melakukan sihir asinkron dengan loop, saya ingin mengingatkan Anda bagaimana kami menulis loop sinkron klasik Show
😐 Putaran sinkronDahulu kala saya menulis loop seperti ini (mungkin Anda juga)
Itu bagus, cepat, tetapi memiliki banyak masalah keterbacaan dan pemeliharaan. Kemudian saya biasa menggunakan versi yang lebih baik _Bahasa JavaScript berkembang sangat cepat. Kami memiliki lebih banyak fitur dan sintaks baru. Salah satu favorit saya adalah async/menunggu. Saya menggunakannya lebih sering sekarang. Dan terkadang saya mengalami situasi di mana saya perlu melakukan sesuatu dengan item dalam array secara tidak sinkron 🤗 Loop asinkronBagaimana cara menggunakan menunggu di dalam satu lingkaran?
Kode ini akan menimbulkan kesalahan sintaksis. Mengapa? . Seperti yang Anda lihat "processArray" adalah fungsi async. Tetapi fungsi anonim yang kami gunakan untuk forEach sinkron 🤔 1. Jangan menunggu hasilBagaimana cara memperbaiki masalah sebelumnya?
Tapi forEach tidak akan menunggu sampai semua item selesai. Itu hanya akan menjalankan tugas dan melanjutkan. Sebagai bukti mari kita tulis tes sederhana _Outputnya akan
Tidak apa-apa jika Anda tidak perlu menunggu hasilnya. Tetapi dalam hampir semua kasus, ini bukanlah logika yang baik 👊 2. Array proses secara berurutanUntuk menunggu hasilnya kita harus kembali ke “for loop” jadul, tapi kali ini kita bisa menggunakan versi modern dengan for. konstruksi (terima kasih kepada Protokol Iterasi) untuk keterbacaan yang lebih baik _Ini akan memberi kita hasil yang diharapkan
Kode akan menangani setiap item satu per satu secara berurutan. Tapi kita bisa menjalankannya secara paralel 💪 3. Proses array secara paralelKami dapat sedikit mengubah kode untuk menjalankan operasi async secara paralel _Kode ini akan menjalankan banyak Juga jangan bingung "paralel" di sini dengan utas asli dan paralel. Kode itu tidak akan menjamin paralelisme eksekusi yang nyata. Itu tergantung pada fungsi item Anda ( _0 dalam demo ini). Permintaan jaringan, pekerja web, dan beberapa tugas lainnya dapat dijalankan secara paralel
Bagaimana Anda menunggu loop berakhir?Menggunakan async/menunggu untuk menunggu loop selesai
. Jadi, untuk digunakan menunggu loop selesai, kita dapat mendefinisikan fungsi asinkron dan menunggu hasilnya dalam .
Apakah JavaScript menunggu fungsi selesai?Utas JavaScript utama akan menjalankan satu fungsi sepenuhnya sebelum menjalankan yang berikutnya, sesuai urutan kemunculannya dalam kode
Bagaimana cara menjeda loop dalam JavaScript?Anda tidak dapat "menjeda" JavaScript di browser web . Namun, Anda dapat mengatur timer dan menyebabkan kode dieksekusi di lain waktu dengan setTimeout() dan setInterval() API yang tersedia di semua browser.
Bagaimana cara menggunakan await inside for loop di JavaScript?Anda perlu menempatkan loop dalam fungsi async, lalu Anda dapat menggunakan await dan loop menghentikan iterasi hingga janji yang kita tunggu terselesaikan. You could also use while or do. while or for loops too with this same structure. |