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!