為什麼我的 setTimeout 調度的函數沒有立即執行?
您的程式碼旨在使用 setTimeout 函數呼叫 doRequest 來測試代理伺服器間隔 10 秒。奇怪的是,這些函數是立即執行的,而不是按照預期的時間表執行。
理解問題
問題在於如何將 doRequest 函數傳遞給 setTimeout。當您指定一個函數為第一個參數時,如 setTimeout(doRequest(url, proxys[proxy]), proxytimeout) 中,該函數將會立即被呼叫。
解
要解決這個問題,您有以下三個選項:
將參數作為單獨的參數傳遞:
setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
使用字串表達式:
setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
在閉包中定義匿名函數:
(function(u, p, t) { setTimeout(function() { doRequest(u, p); }, t); })(url, proxys[proxy], proxytimeout);在閉包中定義匿名函數:
以上是為什麼我的'setTimeout”函數立即執行而不是在預定時間執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!