Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memperkenalkan Kelewatan ke dalam Gelung JavaScript?

Bagaimanakah Saya Boleh Memperkenalkan Kelewatan ke dalam Gelung JavaScript?

DDD
DDDasal
2024-12-18 10:22:11788semak imbas

How Can I Introduce a Delay into a JavaScript Loop?

Melengahkan Gelung JavaScript

Ada kemungkinan untuk memperkenalkan kelewatan ke dalam gelung JavaScript menggunakan fungsi setTimeout(). Walau bagaimanapun, kelakuan lalai setTimeout() adalah untuk dilaksanakan serta-merta. Untuk memperkenalkan kelewatan, kita perlu menggunakan gelung rekursif.

Satu cara untuk mencapainya ialah menggunakan gelung for dan memanggil setTimeout() dalam gelung. Walau bagaimanapun, pendekatan ini menghadapi masalah kerana semua setTimeouts akan dijadualkan serta-merta, membawa kepada berbilang makluman muncul serentak.

Untuk menyelesaikannya, kita perlu menggunakan fungsi rekursif yang memanggil dirinya sendiri dengan kelewatan. Kod berikut menunjukkan pendekatan ini:

var i = 1;                  //  set your counter to 1

function myLoop() {         //  create a loop function
  setTimeout(function() {   //  call a 3s setTimeout when the loop is called
    console.log('hello');   //  your code here
    i++;                    //  increment the counter
    if (i < 10) {           //  if the counter < 10, call the loop function
      myLoop();             //  ..  again which will trigger another 
    }                       //  ..  setTimeout()
  }, 3000)
}

myLoop();                   //  start the loop

Dalam kod ini, kami mencipta fungsi rekursif yang dipanggil myLoop() yang mengandungi setTimeout() 3 saat. Dalam tamat masa, kami menambah kaunter dan menyemak sama ada ia kurang daripada 10. Jika ya, kami memanggil myLoop() sekali lagi, sekali gus memperkenalkan kelewatan antara setiap makluman.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memperkenalkan Kelewatan ke dalam Gelung JavaScript?. 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