Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 临时更改设置间隔的时间_Javascript_Setinterval - Fatal编程技术网

Javascript 临时更改设置间隔的时间

Javascript 临时更改设置间隔的时间,javascript,setinterval,Javascript,Setinterval,setInterval中的定时值确定下次再次调用函数的时间。例如: t = 8000; myFunction(){ if (someCondition){ //halt setInterval //t = 5000; // setInterval(myFunction,t); } // do some logic } setInterval(myFunction, t); 问题是更改t不会影响我希望当前呼叫在下一次呼叫

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

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

setInterval(myFunction, t);

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

您必须使用clearInterval()


您必须使用clearInterval()


如果您想做类似的事情,最好使用
setTimeout
进行自己的间隔控制

var shortInterval = 2000, longInterval = 4000;

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

setTimeout(timerCode, longInterval);

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

如果您想执行类似操作,最好使用
setTimeout
执行自己的间隔控制

var shortInterval = 2000, longInterval = 4000;

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

setTimeout(timerCode, longInterval);

这样,在计时器的每次迭代中,您可以决定距离下一次迭代应该有多长时间。如果你想停下来,只需完全不重置计时器。

使用
clearInterval
取消旧计时器,然后使用
setInterval
启动新计时器。您在timerid上调用clearInterval。使用
clearInterval
取消旧计时器,然后使用
setInterval
启动新计时器。您在timerid上调用clearInterval。为什么我自己的间歇时间比较好,因为它更灵活。没有真正的性能问题,也没有明显的代码问题。事实上,很多人建议永远不要使用
setInterval
。为什么使用我自己的interval更好?@sєm sєm因为它更灵活。没有真正的性能问题,也没有明显的代码问题。事实上,很多人建议不要使用
setInterval