3

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

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

2 回答 2

2

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

// 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 );

这是一个演示/测试小提琴。

于 2012-12-01T06:09:00.900 回答
0

刚刚对此进行了测试,它充当循环中的 continue 语句。对于现在发现这一点的其他编码人员,只需return在 setInterval 中使用。

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

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

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

var myRepeater = setInterval( myFunction, 1000 );
于 2021-05-15T05:47:15.537 回答