Как выйти из SetInterval
-
22-09-2019 - |
Вопрос
Мне нужно выйти из интервала работы, если условия верны:
var refreshId = setInterval(function() {
var properID = CheckReload();
if (properID > 0) {
<--- exit from the loop--->
}
}, 10000);
Решение
Использовать ClearInterval:
var refreshId = setInterval(function() {
var properID = CheckReload();
if (properID > 0) {
clearInterval(refreshId);
}
}, 10000);
Другие советы
Обновлено для ES6
Вы можете использовать переменную, чтобы избежать загрязнения пространства имен:
const CheckReload = (() => {
let counter = - 5;
return () => {
counter++;
return counter;
};
})();
{
const refreshId = setInterval(
() => {
const properID = CheckReload();
console.log(properID);
if (properID > 0) {
clearInterval(refreshId);
}
},
100
);
}
Передать значение setInterval
к ClearInterval.
Простой пример
const interval = setInterval(() => {
clearInterval(interval);
}, 1000)
Пример обратного отсчета
Таймер уменьшается каждую секунду, пока не достигнет 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);
<p class="timer"></p>
Пример обратного отсчета с разделением
let secondsToCountDown = 2
const doStuffOnInterval = () => {
document.querySelector('.timer').innerHTML = secondsToCountDown
if (secondsToCountDown === 0) {
stopInterval()
}
secondsToCountDown--;
}
const stopInterval = () => {
clearInterval(interval);
}
const interval = setInterval(doStuffOnInterval, 1000);
<p class="timer"></p>
Не связан с StackOverflow