setTimeout 函數呼叫延遲問題
嘗試實作5 秒輪詢機制來更新HTML 值時,使用者可能會遇到意外行為其中setTimeout() 函數立即被調用,而不是在預期的延遲之後調用。這可以阻止所需的交錯伺服器請求。
原因:
問題源自於 setTimeout() 函數的呼叫方式不正確。
原創程式碼:
setTimeout(GetUsersNumber(), 50000);
解釋:
在JavaScript 中,函數可以定義為不含帶號的對象。但是,要呼叫函數,後面必須跟括號。在原始程式碼中,函數 GetUsersNumber() 是在 setTimeout() 內部立即呼叫的,而不是作為函數參考傳遞。
解:
到解決這個問題,只需刪除setTimeout() 參數中函數名稱後面的括號:
setTimeout(GetUsersNumber, 5000); // 5 seconds instead of 50
這可以確保setTimeout() 捕獲對GetUsersNumber 函數物件本身的引用,允許它在延遲完成時呼叫該函數。
以上是為什麼我的'setTimeout”函數立即執行而不是延遲後執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!