Pelaksanaan tunggal panggilan balik setInterval:
Pertimbangkan kod berikut yang bertujuan untuk mencipta pembilang:
function timer() { console.log("timer!") } window.setInterval(timer(), 1000)
Walau bagaimanapun , kod ini melaksanakan fungsi pemasa sekali sahaja. Mari kita selidiki sebab isu ini berlaku dan cara menyelesaikannya.
Masalah timbul kerana parameter pertama setInterval harus menjadi rujukan fungsi, bukan panggilan fungsi. Dalam kod di atas, pemasa() dipanggil serta-merta, kembali tidak ditentukan. Akibatnya, setInterval ditetapkan untuk memanggil undefined pada selang 1000 milisaat, yang membawa kepada satu pelaksanaan dan bukannya gelung berterusan.
Untuk membetulkannya, kita perlu menghantar rujukan fungsi dan bukannya memanggil fungsi . Berikut ialah kod yang diperbetulkan:
function timer() { console.log("timer!"); } window.setInterval(timer, 1000);
Dalam versi yang diperbetulkan ini, pemasa diluluskan sebagai rujukan, membenarkan setInterval memanggilnya pada selang waktu yang ditentukan.
Sebagai alternatif, kita boleh menggunakan fungsi tanpa nama sebagai panggilan balik:
window.setInterval( function() { console.log("timer!"); }, 1000)
Pendekatan ini lebih pendek tetapi mungkin menjadi kurang boleh dibaca apabila fungsi menjadi lebih kompleks.
Dengan melaksanakan perubahan ini, fungsi pemasa kini akan dilaksanakan berulang kali pada selang waktu yang dikehendaki, memastikan pembilang berjalan berterusan.
Atas ialah kandungan terperinci Mengapa Panggilan Balik `setInterval` Saya Hanya Berjalan Sekali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!