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
Susan Sarandonasal
2024-12-02 11:36:10586semak imbas

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);
}

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);

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!

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