首頁 >web前端 >js教程 >為什麼我的'setTimeout”函數立即執行而不是延遲後執行?

為什麼我的'setTimeout”函數立即執行而不是延遲後執行?

Barbara Streisand
Barbara Streisand原創
2024-12-13 05:43:18673瀏覽

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

setTimeout 函數呼叫延遲問題

嘗試實作5 秒輪詢機制來更新HTML 值時,使用者可能會遇到意外行為其中setTimeout() 函數立即被調用,而不是在預期的延遲之後調用。這可以阻止所需的交錯伺服器請求。

原因:

問題源自於 setTimeout() 函數的呼叫方式不正確。

原創程式碼:

setTimeout(GetUsersNumber(), 50000);

解釋:

在JavaScript 中,函數可以定義為不含帶號的對象。但是,要呼叫函數,後面必須跟括號。在原始程式碼中,函數 GetUsersNumber() 是在 setTimeout() 內部立即呼叫的,而不是作為函數參考傳遞。

解:

到解決這個問題,只需刪除setTimeout() 參數中函數名稱後面的括號:

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

這可以確保setTimeout() 捕獲對GetUsersNumber 函數物件本身的引用,允許它在延遲完成時呼叫該函數。

以上是為什麼我的'setTimeout”函數立即執行而不是延遲後執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn