Есть таймер с рекурсией, мне его нужно остановить на определённом моменте, но он продолжает считать дальше.
Пытался if(i>stop) clearTimeout(rec); засунуть внутрь в начало, в конец, вынести за пределы - ничего не помогает..
Что делать?
Код:
var i = 0;
var stop = 10;
var rec = setTimeout(function recFun() {
i++;
console.info(i);
rec = setTimeout(recFun, 300);
}, 300);
if(i>stop) {
clearTimeout(rec);
}
То, что вы хотите сделать, подходит не под setTimeout, а под setInterval (периодический запуск таймера). С его помощью вы как раз сможете внутри функции, положенной в setInterval проверять превышен ли порог stop счетчиком i и в этом случае остановить интервальный таймер:
var i = 0;
var stop = 10;
var timer = setInterval(function() {
console.info(++i);
if (i > stop) clearInterval(timer);
}, 300);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости