如何打破当前迭代并继续setInterval()中的下一次迭代?

时间:2012-12-01 05:59:57

标签: javascript timing

就像'continue'用于打破当前迭代并继续下一步,我如何在JavaScript中的setInterval()中打破当前迭代并继续下一个间隔而不等待?

var intervalID = window.setInterval( function() {
   if(conditionIsTrue) {
      // Break this iteration and proceed with the next
      // without waiting for 3 seconds.
   }
}, 3000 );

2 个答案:

答案 0 :(得分:1)

您可以“简单地”(或不那么简单地)清除间隔,然后重新创建它:

// run the interval function immediately, then start the interval
var restartInterval = function() {
    intervalFunction();
    intervalID = setInterval(intervalFunction, 3000 );
};

// the function to run each interval
var intervalFunction = function() {
    if(conditionIsTrue) {
      // Break this iteration and proceed with the next
      // without waiting for 3 seconds.

      clearInterval(intervalID);
      restartInterval();
   }
};

// kick-off
var intervalID = window.setInterval(intervalFunction, 3000 );

Here's a demo/test Fiddle.

答案 1 :(得分:0)

刚刚测试了这个,它在循环中充当 continue 语句。对于现在发现此问题的编码人员,只需在 setInterval 中使用 return

var myRepeater = setInterval( function() {
   if(conditionIsTrue) {
      return;
   }
}, 1000 );

编辑:为了在中断循环的当前执行后立即执行,可以改为执行类似的操作(理论上。如果 conditionIsTrue 保持为 true >):

function myFunction() {
    if(conditionIsTrue) {
       myFunction();
       return;
    }
    // Interval function code here...
}

var myRepeater = setInterval( myFunction, 1000 );