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

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

Barbara Streisand
發布: 2024-12-13 05:43:18
原創
671 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板