首页  >  文章  >  web前端  >  为什么我的setTimeout函数立即执行?

为什么我的setTimeout函数立即执行?

DDD
DDD原创
2024-11-11 17:31:03688浏览

Why Does My setTimeout Function Execute Immediately?

使用 setTimeout 意外立即执行函数

在尝试按特定时间间隔安排函数调用时,用户遇到 setTimeout 的问题尽管指定了超时,函数仍立即执行该函数。 doRequest 函数应该每隔 10 秒调用一次,但它是立即调用的。

立即执行的原因在于 setTimeout 函数的调用方式。以下代码片段演示了该问题:

setTimeout(doRequest(url, proxys[proxy]), proxytimeout);

在此代码中,doRequest 函数作为第一个参数传递给 setTimeout,但该函数是立即执行而不是被调度。

解决方案:

要解决此问题并确保 doRequest 被调度,可以通过三种替代方法使用 setTimeout:

  1. 将函数名称作为字符串传递:

    setTimeout('doRequest(' + url + ',' + proxys[proxy] + ')', proxytimeout);
  2. 使用匿名函数:

    (function(u, p, t) {
        setTimeout(function() { doRequest(u, p); }, t);
    })(url, proxys[proxy], proxytimeout);
  3. 先传递函数名称,然后传递参数:

    setTimeout(doRequest, proxytimeout, url, proxys[proxy]);

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn