Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi `setTimeout` Saya Melaksanakan Serta-merta Daripada Selepas Kelewatan?

Mengapa Fungsi `setTimeout` Saya Melaksanakan Serta-merta Daripada Selepas Kelewatan?

Susan Sarandon
Lepaskan: 2024-12-02 11:36:10
asal
516 orang telah melayarinya

Why Does My `setTimeout` Function Execute Immediately Instead of After the Delay?

Perlaksanaan Segera yang Tidak Dijangka bagi Fungsi setTimeout

Dalam usaha untuk meminimumkan beban pelayan dengan mengemas kini nilai halaman web secara berkala, pembangun menghadapi isu di mana fungsi setTimeout() berkelakuan secara tidak dijangka. Daripada melaksanakan selepas kelewatan yang ditentukan, fungsi tersebut dilaksanakan serta-merta.

Setelah memeriksa coretan kod yang disediakan:

window.onload = function GetUsersNumber() {
    //...
    setTimeout(GetUsersNumber(), 50000);
}
Salin selepas log masuk

Isunya terletak pada cara fungsi setTimeout() dipanggil. Dalam JavaScript, panggilan fungsi dilambangkan dengan kurungan selepas nama fungsi. Walau bagaimanapun, dalam kes ini, kurungan yang mengikuti GetUsersNumber() menggunakan fungsi dengan serta-merta, dan bukannya menghantarnya sebagai rujukan.

Untuk membetulkan isu ini, alih keluar kurungan daripada panggilan setTimeout() , dengan berkesan lulus fungsi objek itu sendiri:

setTimeout(GetUsersNumber, 50000);
Salin selepas log masuk

Dengan berbuat demikian, setTimeout() kini boleh menjadualkan fungsi dengan betul untuk dilaksanakan selepas kelewatan yang ditentukan, membenarkan kemas kini tertunda yang dimaksudkan bagi nilai halaman web tanpa membebankan pelayan.

Atas ialah kandungan terperinci Mengapa Fungsi `setTimeout` Saya Melaksanakan Serta-merta Daripada Selepas Kelewatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan