Rumah >hujung hadapan web >tutorial js >Mengapa Fungsi setInterval Saya Hanya Berjalan Sekali?

Mengapa Fungsi setInterval Saya Hanya Berjalan Sekali?

Linda Hamilton
Linda Hamiltonasal
2024-11-28 22:34:11763semak imbas

Why Is My setInterval Function Only Running Once?

Memahami Fungsi setInterval dan Pelaksanaannya

Fungsi setInterval ialah alat yang berguna untuk menjadualkan tugas untuk dijalankan pada selang masa yang tetap dalam JavaScript. Walau bagaimanapun, pembangun mungkin menghadapi isu di mana fungsi panggil balik nampaknya hanya dilaksanakan sekali sahaja dan bukannya berterusan.

Isu: Panggilan Balik Tidak Melaksanakan Seperti Yang Dijangkakan

Satu sebab biasa untuk ini tingkah laku ialah penggunaan panggilan fungsi setInterval yang salah. Panggilan balik hendaklah rujukan fungsi, bukan panggilan fungsi.

Penjelasan: Panggilan Fungsi lwn. Rujukan

Dalam kes contoh yang diberikan:

window.setInterval(timer(), 1000)

Terdapat kurungan yang hilang selepas fungsi pemasa, menyebabkan ia menjadi panggilan fungsi dan bukannya rujukan. Ini menghasilkan pelaksanaan segera fungsi pemasa dan seterusnya menetapkan selang untuk hasil yang dilaksanakan, yang tidak ditentukan.

Penyelesaian: Membetulkan Sintaks

Untuk membetulkan ini mengeluarkan dan memastikan pelaksanaan panggilan balik yang berterusan, gunakan rujukan fungsi sebagai berikut:

window.setInterval(timer, 1000);

Sebagai alternatif, anda boleh menggunakan fungsi tanpa nama sebagai panggilan balik, yang lebih pendek tetapi mungkin mengurangkan kebolehbacaan untuk fungsi yang lebih besar:

window.setInterval( function() {
  console.log("timer!");
}, 1000)

Ini memastikan bahawa fungsi pemasa adalah dijadualkan berjalan pada selang waktu 1000 milisaat yang ditetapkan.

Atas ialah kandungan terperinci Mengapa Fungsi setInterval Saya Hanya Berjalan Sekali?. 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