Практический смысл
setInterval(fn, delay) вызывает fn повторно каждые delay мс (пока не остановите). Возвращает id для clearInterval.
const id = setInterval(() => {
tick++;
render(tick);
}, 1000);
clearInterval(id);
Ловушки
- Если
fn работает дольше delay, тики накладываются (в браузере очередь растёт) — возможны рывки.
- Нужно чистить интервал при unmount компонента — иначе утечка.
- Для анимаций чаще
requestAnimationFrame, не interval.
Паттерн «рекурсивный timeout»
let timer;
function loop() {
timer = setTimeout(loop, 1000);
}
loop();
Так проще контролировать паузу между окончанием и следующим запуском.
Итог: setInterval — периодический таймер; помните про очистку и перекрывающиеся выполнения.