【问题标题】:Reset setTimeout() back to maximum time without executing?将 setTimeout() 重置为最大时间而不执行?
【发布时间】:2017-05-03 04:26:07
【问题描述】:

我正在设置一个超时时间:

button.onClick(
 timer = setTimeout(func(){}, 1000);
);

当再次单击该按钮时,我想在不运行 func() 的情况下将计时器设置回 1000。

按原样,多次单击按钮只会使计时器在某个随机时间关闭。我之前尝试过调用 clearTimeout(timer),但它什么也没做。

我之前曾多次遇到过这个问题,我只想在触发事件上重置计时器,并且总是不得不最终找到解决方法。我无法想象没有办法让计时器恢复到最大值。非常感谢没有从头开始编写我自己的 setTimeout 版本的任何见解。

【问题讨论】:

  • 所以您想删除之前的计时器并将其时间重置为 1000 毫秒?

标签: javascript jquery timer


【解决方案1】:

将定时器设置为全局变量,点击清除前一个定时器

var timer;
button.onClick(
    clearTimeout(timer);
    timer = setTimeout(func(){}, 1000);
);

【讨论】:

  • 是的,你是对的。不知何故,这个简单的解决方案每次在更复杂的实现中都让我望而却步。非常感谢你。对于其他好奇的人,请拨jsfiddle.net/enxkLpab
  • 很高兴能帮上忙
【解决方案2】:
button.onClick(
    clearTimeout(timer);
    timer = setTimeout(func(){}, 1000);
);

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

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多