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

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

Barbara Streisand
Barbara Streisandasal
2024-12-13 05:43:18679semak imbas

Why is my `setTimeout` Function Executing Immediately Instead of After the Delay?

setTimeout Function Invocation Isu Kelewatan

Apabila cuba melaksanakan mekanisme pengundian 5 saat untuk kemas kini nilai HTML, pengguna mungkin menghadapi tingkah laku yang tidak dijangka di mana fungsi setTimeout() dipanggil serta-merta dan bukannya selepas kelewatan yang dimaksudkan. Ini boleh menghalang permintaan pelayan berperingkat yang dikehendaki.

Punca:

Isu ini berpunca daripada cara yang salah fungsi setTimeout() sedang digunakan.

Asal Kod:

setTimeout(GetUsersNumber(), 50000);

Penjelasan:

Dalam JavaScript, fungsi boleh ditakrifkan sebagai objek tanpa kurungan. Walau bagaimanapun, untuk memanggil fungsi, ia mesti diikuti dengan kurungan. Dalam kod asal, fungsi GetUsersNumber() sedang dipanggil serta-merta di dalam setTimeout(), dan bukannya dihantar sebagai rujukan fungsi.

Penyelesaian:

Kepada selesaikan isu ini, cuma alih keluar kurungan selepas nama fungsi dalam argumen setTimeout():

setTimeout(GetUsersNumber, 5000); // 5 seconds instead of 50

Ini memastikan bahawa setTimeout() menangkap rujukan kepada objek fungsi GetUsersNumber itu sendiri, membenarkan ia menggunakan fungsi apabila kelewatan selesai.

Atas ialah kandungan terperinci Mengapakah 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