Привет. Допустим, есть код:
let interval = setInterval(() => doSomething(), 3000);
Чтобы остановить исполнение setInterval
, нужно сделать clearInterval(interval);
Вопрос: а как, собственно, определить, работает ли ещё setInterval, или он уже прекратил свою работу?
console.log(interval)
что во время работы, что уже после clearInterval показывает одно и то же число - 69. После перезагрузки страницы оно может измениться.
let interval = setInterval(() => doSomething(), 3000);
// interval - принимает id интервала (генерируется случайно, любое целое число > 0)
На сколько мне известно, отслеживать можно только одним способом:
let intervalID = setInterval(function(){}, 1000);
setTimeout(function() {
clearTimeout(intervalID); // Отменяем
intervalID = null; // Следом задаем id значение false/null/undefined/0 (кому как нравится)
}, 3000);
// Просто для вывода состояния
const statusIntervalID = setInterval(function() {
if(intervalID) { // Проверяем активен ли интервал
console.log('Interval is active');
} else {
clearInterval(statusIntervalID);
console.log('Interval cleared');
}
}, 500);
Нет прямого способа сделать то, что вы ищете. Вместо этого вы можете установить timer
false
при каждом вызове clearInterval
:
// Start timer
var timer = setInterval(fncName, 1000);
// End timer
clearInterval(timer);
timer = false;
Теперь timer
либо будет ложным , либо будет иметь значение в данный момент времени, поэтому вы можете просто проверить
if (timer)
...
Если вы хотите инкапсулировать это в класс:
function Interval(fn, time) {
var timer = false;
this.start = function () {
if (!this.isRunning())
timer = setInterval(fn, time);
};
this.stop = function () {
clearInterval(timer);
timer = false;
};
this.isRunning = function () {
return timer !== false;
};
}
var i = new Interval(fncName, 1000);
i.start();
if (i.isRunning())
// ...
i.stop();
Источник: https://stackoverflow.com/questions/2679141
Нужен аналог webHook в Telegram (ну, или хотя бы long-poll), который мониторит видео на канале YouTube и при добавлении нового видео передает информацию о нем...
как сделать поле для названия, при вводе на который меняется и title страницы и еще одно поле