Что представляет собой requestAnimationFrame?

Браузерный API для эффективного выполнения анимаций Синхронизирует callback с перерисовкой экрана Позволяет работать с 60 FPS либо частотой обновления дисплея Для плавности заменяет setTimeout/setInterval Сокращает…

Короткий ответ

Что ответить на собеседовании

Браузерный API для эффективного выполнения анимаций Синхронизирует callback с перерисовкой экрана Позволяет работать с 60 FPS либо частотой обновления дисплея Для плавности заменяет setTimeout/setInterval Сокращает нагрузку на CPU и энергопотребление Callback запускается до следующего repaint Применяется в гейминге, UI-анимациях и плавных переходах

Подробный разбор

Ответ с пояснениями

Что представляет собой requestAnimationFrame?

  • Браузерный API для эффективного выполнения анимаций
  • Синхронизирует callback с перерисовкой экрана
  • Позволяет работать с 60 FPS либо частотой обновления дисплея
  • Для плавности заменяет setTimeout/setInterval
  • Сокращает нагрузку на CPU и энергопотребление
  • Callback запускается до следующего repaint
  • Применяется в гейминге, UI-анимациях и плавных переходах

Подробный ответ

Основной ответ

requestAnimationFrame — встроенный браузерный API, предназначенный для оптимизированного обновления графики и анимаций. Браузер вызывает переданную функцию синхронно с перерисовкой, благодаря чему рендеринг получается плавным и эффективным, обычно с частотой около 60 кадров в секунду.

Ключевые моменты

  • Синхронизация с экраном: в отличие от таймеров с фиксированным интервалом (setTimeout/setInterval), requestAnimationFrame запускает callback перед ближайшим repaint. Это уменьшает пропуски кадров и делает движение ровнее.
  • Экономия ресурсов: для скрытой, неактивной или свёрнутой вкладки браузер приостанавливает вызовы requestAnimationFrame. CPU и GPU получают меньшую нагрузку, а энергия экономится, тогда как таймеры могут продолжать выполняться.
  • Использование: callback получает timestamp, по которому можно вычислять изменения анимации с учётом времени кадра и точнее контролировать её скорость.

Практический контекст

В React 18+ и при работе с canvas 2D/WebGL requestAnimationFrame считается стандартным способом организовать smooth анимацию для игр, визуализаций данных и интерфейсных эффектов. Для UI с высокой частотой кадров он подходит лучше setTimeout: при 60fps обеспечивает латентность около 16ms и плавность.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее