Ответ
В JavaScript есть несколько способов работы с таймерами:
- setTimeout - выполняет функцию один раз через указанное время:
setTimeout(() => {
console.log('Выполнится через 1 секунду');
}, 1000);
- setInterval - повторяет выполнение функции с указанным интервалом:
const interval = setInterval(() => {
console.log('Повторяется каждую секунду');
}, 1000);
// Для остановки:
clearInterval(interval);
- requestAnimationFrame - оптимизирован для анимаций, синхронизируется с частотой обновления экрана:
function animate() {
// Анимация
requestAnimationFrame(animate);
}
animate();
Важные нюансы:
- Таймеры в браузере могут задерживаться из-за вкладки в фоновом режиме или нагрузки процессора
- Минимальная задержка для setTimeout/setInterval - 4мс (в соответствии со спецификацией)
- Для точных интервалов лучше использовать performance.now() и корректировать время вручную