在這種情況下,一個函數本來打算使用setTimeout 延遲執行,但卻立即執行,問題在於如何將函數傳遞給setTimeout。
要解決此問題,可以透過三種方法來確保其以所需的延遲執行:
單獨傳遞參數:
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);
此方法涉及呼叫預期函數的匿名函數。閉包確保函數中使用的值在整個循環中保持一致。
透過採用這些方法中的任何一個,您可以有效地安排 doRequest 函數以指定的延遲執行。
以上是為什麼我的“setTimeout”函數立即執行而不是延遲後執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!