首页 > web前端 > js教程 > 正文

为什么我的'setTimeout”函数立即执行而不是在预定时间执行?

Susan Sarandon
发布: 2024-11-12 13:40:01
原创
724 人浏览过

Why Is My `setTimeout` Function Executing Immediately Instead of at a Scheduled Time?

为什么我的 setTimeout 调度的函数没有立即执行?

您的代码旨在使用 setTimeout 函数调用 doRequest 来测试代理服务器间隔 10 秒。奇怪的是,这些函数是立即执行的,而不是按照预期的时间表执行。

理解问题

问题在于如何将 doRequest 函数传递给 setTimeout。当您指定一个函数作为第一个参数时,如 setTimeout(doRequest(url, proxys[proxy]), proxytimeout) 中,该函数将立即被调用。

解决方案

要解决该问题,您需要三个选项:

  1. 将参数作为单独的参数传递:

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);
    登录后复制
  2. 使用字符串表达式:

    setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
    登录后复制
  3. 在闭包中定义匿名函数:

    (function(u, p, t) {
       setTimeout(function() { doRequest(u, p); }, t);
    })(url, proxys[proxy], proxytimeout);
    登录后复制

第一个选项是首选,因为它更清晰、更明确。由于其“hacky”性质,第二个选项不太理想,而第三个选项可能很难理解,但可以防止循环内的值发生变化。

以上是为什么我的'setTimeout”函数立即执行而不是在预定时间执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板