在这种情况下,一个函数本打算使用 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中文网其他相关文章!