如何退出setInterval

Mar*_*gco 54 javascript setinterval

如果条件正确,我需要退出运行间隔:

var refreshId = setInterval(function() {
        var properID = CheckReload();
        if (properID > 0) {
            <--- exit from the loop--->
        }
    }, 10000);
Run Code Online (Sandbox Code Playgroud)

CMS*_*CMS 130

使用clearInterval:

var refreshId = setInterval(function() {
  var properID = CheckReload();
  if (properID > 0) {
    clearInterval(refreshId);
  }
}, 10000);
Run Code Online (Sandbox Code Playgroud)

  • 这是 Javascript 丑陋的全新水平。在其自己的声明中引用变量。 (6认同)
  • 如何从循环外部执行`clearInterval`? (4认同)
  • 只需调用`clearInterval(intervalName)`,例如:`var helloEverySecond = setInterval(function(){console.log("hello");},1000);`可以通过`clearInterval(helloEverySecond)停止;` (4认同)
  • 为什么它很丑@Prime624?ClearInterval 没有正确清理吗? (2认同)

Tob*_*ltz 8

将 的值传递setIntervalclearInterval

简单的例子

const interval = setInterval(() => {
  clearInterval(interval);
}, 1000)
Run Code Online (Sandbox Code Playgroud)

倒计时示例

计时器每秒递减一次,直到达到 0。

let secondsToCountDown = 2

const interval = setInterval(() => {

  // just for presentation
  document.querySelector('.timer').innerHTML = secondsToCountDown

  if (secondsToCountDown === 0) {
    clearInterval(interval); // time is up
  }

  secondsToWait--;
}, 1000);
Run Code Online (Sandbox Code Playgroud)
<p class="timer"></p>
Run Code Online (Sandbox Code Playgroud)


带分离的倒计时示例

let secondsToCountDown = 2

const doStuffOnInterval = () => {
  document.querySelector('.timer').innerHTML = secondsToCountDown

  if (secondsToCountDown === 0) {
    stopInterval()
  }

  secondsToCountDown--;
}

const stopInterval = () => {
  clearInterval(interval);
}

const interval = setInterval(doStuffOnInterval, 1000);
Run Code Online (Sandbox Code Playgroud)
<p class="timer"></p>
Run Code Online (Sandbox Code Playgroud)