0

中的时间值setInterval确定下一次将再次调用该函数的时间。例如:

t = 8000;    
myFunction(){
   if (someCondition){
        //halt setInterval
        //t = 5000;
       // setInterval(myFunction,t);
   }
    // do some logic
}

setInterval(myFunction, t);

问题是更改t不会影响我希望在下一次通话之前保持当前通话的时间。换句话说,有什么办法可以停止setInterval,然后我可以用新的时间再次重置它?

4

2 回答 2

3

如果你想做这样的事情,你最好用自己的间隔控制setTimeout

var shortInterval = 2000, longInterval = 4000;

function timerCode() {
  // do something
  if (whatever) {
    setTimeout(timerCode, shortInterval);
  }
  else {
    setTimeout(timerCode, longInterval);
  }
}

setTimeout(timerCode, longInterval);

这样,在计时器的每次迭代中,您都可以决定距离下一次迭代应该多长时间。如果你想停止,根本不要重置计时器。

于 2013-11-05T23:41:15.197 回答
1

您必须使用 clearInterval()。

    var myInterval = setInterval(myFunction, t);

    ...

    clearInterval(myInterval);

...

myInterval = setInterval(myFunction, 1000);
于 2013-11-05T23:39:41.637 回答