Встречается на собеседованиях • сегодня

В чем разница между requestAnimationFrame и setTimeout в стеке задач

requestAnimationFrame и setTimeout работают в разных частях цикла событий:

  1. requestAnimationFrame:
    • Вызывается перед ререндерингом страницы (в фазе BeforePaint).
    • Оптимизирован для анимаций, синхронизируется с частотой обновления экрана (обычно 60fps).
    • Браузер может объединять вызовы или пропускать кадры для оптимизации.
js
function animate() {
  element.style.left = `${pos++}px`;
  requestAnimationFrame(animate);
}
requestAnimationFrame(animate);
  1. setTimeout:
    • Попадает в общую очередь макрозадач.
    • Нет гарантии точного времени выполнения (может задерживаться из-за других задач).
    • Минимальная задержка ≈4мс в современных браузерах.
js
function move() {
  element.style.left = `${pos++}px`;
  setTimeout(move, 16); // ~60fps
}
setTimeout(move, 16);

Ключевое отличие: rAF - для визуальных изменений, setTimeout - для общего отложенного кода. Браузер может приостановить rAF при скрытой вкладке.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы