如何在循环时更新jquery setInterval延迟?

时间:2014-12-18 18:00:32

标签: javascript jquery

我在这里有这个基本的jquery脚本:

var delay = 200;
setInterval(function(){
  countup += 1;
  if(countup >= 50) {
     console.log('SSS');
     console.log(delay);
     delay = 10000; //Set the delay slower
  }
  console.log(countup);
},delay);

它确实将延迟设置为10000,但它不会更新interVal,它只是在200 ms运行..任何人都知道该怎么做?

3 个答案:

答案 0 :(得分:3)

如果您想要动态超时,请使用setTimeout而不是setInterval。

var delay = 200;
function myInterval(){
  countup += 1;
  if(countup >= 50) {
     console.log('SSS');
     console.log(delay);
     delay = 10000; //Set the delay slower
  }
  setTimeout(myInterval, delay);
  console.log(countup);
}
setTimeout(myInterval ,delay);

答案 1 :(得分:1)

您需要清除间隔并重置它。

var delay = 200,
    slowDelay = 10000,
    countup = 0,
    interval;

function action(){
  countup += 1;
  if(countup >= 50) {
     console.log('SSS');
     console.log(delay);
     clearInterval(interval);
     setInterval(action,slowDelay );
  }
  console.log(countup);
}

setInterval(action,delay);

答案 2 :(得分:0)

您无法更改setInterval间隔的延迟,但您可以使用setTimeout代替使用更改延迟重复设置超时:

var delay = 200;
setTimeout(function f(){
  countup += 1;
  if(countup >= 50) {
     console.log('SSS');
     console.log(delay);
     delay = 10000;
  }
  console.log(countup);
  setTimeout(f, delay);
},delay);