Gelung Asynchronous dalam JavaScript
Walaupun JavaScript menyediakan pelbagai jenis gelung, mencipta gelung yang menjeda pelaksanaan untuk menunggu panggilan tak segerak boleh mencabar. Ini kerana mencampurkan kod segerak dan tak segerak boleh membawa kepada tingkah laku yang tidak dijangka.
Penyelesaian: Terima Pendekatan Tak Segerak
Untuk mengatasi had ini, anda perlu menerima acara sepenuhnya. -pendekatan JavaScript. Ini melibatkan penggunaan fungsi yang akan dipanggil apabila panggilan tak segerak selesai. Gelung kemudiannya boleh meneruskan pelaksanaan selepas panggilan balik dipanggil.
Memperkenalkan Fungsi asyncLoop
Fungsi pembantu yang dipanggil asyncLoop boleh dibuat untuk memudahkan tingkah laku gelung tak segerak ini. Ia memerlukan tiga parameter:
Fungsi asyncLoop mengekalkan indeks pembolehubah dalaman untuk menjejaki lelaran semasa dan membenderakan pembolehubah yang dilakukan untuk menunjukkan apabila gelung telah selesai. Dalam fungsi tersebut, terdapat objek gelung dalaman yang menyediakan kaedah berikut:
Untuk memulakan gelung, loop.next() dipanggil. Setiap kali fungsi func digunakan, ia boleh memanggil loop.next() untuk meneruskan gelung atau loop.break() untuk menamatkannya.
Contoh Penggunaan:
Contoh berikut menunjukkan cara menggunakan fungsi asyncLoop untuk mencipta gelung asynchronous:
<code class="javascript">asyncLoop(10, (loop) => { someFunction(1, 2, (result) => { console.log(loop.iteration()); loop.next(); }); }, () => { console.log('cycle ended'); });</code>
Kod ini akan melaksanakan someFunction 10 kali secara tak segerak dan log nombor lelaran dalam konsol. Mesej tamat kitaran akan dicetak apabila gelung selesai.
Dengan menggunakan pendekatan ini, pembangun JavaScript boleh mencipta gelung tak segerak yang berfungsi dengan lancar dalam persekitaran terdorong peristiwa, mengelakkan potensi isu dengan menyekat skrip dan penyemak imbas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Gelung Asynchronous dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!