【问题标题】:settimeout executes multiple timessettimeout 执行多次
【发布时间】:2017-08-10 04:04:24
【问题描述】:

单击按钮时,我每 3 分钟调用一次 Ajax 函数

intervalId = setTimeout(function(){ searchSiteDetailViaAjax() }, 180000);

在停止按钮上我正在停止这个

clearTimeout(intervalId);
intervalId = null;

最初有几次它工作正常,但在执行 clearTimeout 之后,计时器一次又一次地调用 Ajax 函数。

【问题讨论】:

  • 这里没有足够的信息。你在什么范围内定义intervalId?添加更多代码。
  • 你能发布更多信息吗?代码示例?
  • intervalId 的范围是全局的。

标签: javascript timer settimeout


【解决方案1】:

听起来您想与setInterval()clearInterval() 合作。 setTimeout() 只运行一次,你说你希望它每 3 分钟运行一次,你会想要使用 setInterval()

setInterval MDN:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

clearInterval MDN:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval

【讨论】:

    【解决方案2】:

    听起来您可能需要在点击时先致电clearTimeout(intervalId);,然后再致电setTimeout

    听起来正在发生的事情是您将要执行的函数排队,然后再次单击该按钮,您将另一次执行排队并接收不同的句柄。单击停止按钮将不再能够清除导致您多次执行的先前句柄。

    【讨论】:

    • 别忘了给我我的道具!哈哈。很高兴我能帮忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多