【问题标题】:reset Timer of setInterval()重置 setInterval() 的计时器
【发布时间】:2013-08-16 09:23:21
【问题描述】:
 var timer;
 chat.client.addMessage = function (data) {
     clearTimeout(timer);
     test2(data);
 };
 timer = setInterval(function () {
     console.log("working");
     test1();
 }, 5000);  

我试图在执行 chat.client.addMessage 时重新启动计时器。每 5000 毫秒后执行一次 SetInterval,直到执行该方法时执行 chat.client.addMessage setInterval 函数停止执行。帮助将不胜感激:)

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您需要使用clearInterval 而不是clearTimeout,因为clearTimeout 是setTimeout 的倒数。您可以以相同的方式使用它:

    clearInterval(timer);
    

    【讨论】:

    • chat.client.addMessage 执行后仍未执行
    • 在这种情况下,chat.client.addMessage 可能不会被调用。在里面放一个console.log
    • 那么你的问题不在于 setInterval/clearInterval。这是它的工作原理:jsfiddle.net/Blade0rz/3HWxQ
    • 好吧,当我删除那个 cleatInterval(timer) 函数时。一切正常,但 setInterval 时间显然没有被重置
    • 聚会有点晚了,但clearIntervalclearTimeoutactually interchangeable(并不是说它们应该互换使用)。不知道为什么这是公认的答案,因为它似乎没有回答 OP 的问题。
    【解决方案2】:

    你需要添加一个清除间隔然后重新启动它的函数

    function resetInterval() {
      clearInterval(timer);
    
      timer = setInterval(function() {
        console.log("restarted interval");
        test1();
       }, 5000); 
     }
    

    那么你可以根据需要简单地调用它

    chat.client.addMessage = function(data) {
      resetInterval();
      test2(data);
    };
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多