Что такое requestAnimationFrame

Ответ

requestAnimationFrame — это метод JavaScript, который позволяет выполнять анимации и другие операции, требующие перерисовки экрана, синхронизированными с частотой обновления браузера (обычно 60 FPS).

Преимущества:

  • Оптимизирует производительность, избегая лишних перерисовок.
  • Автоматически приостанавливается при скрытии вкладки.

Пример использования:

function animate() {
  // Логика анимации
  element.style.left = (parseInt(element.style.left) + 1) + 'px';

  // Запускаем следующий кадр
  requestAnimationFrame(animate);
}

// Старт анимации
requestAnimationFrame(animate);

Альтернатива: setTimeout/setInterval, но они не синхронизированы с рендерингом и могут вызывать лаги.

Ответ 18+ 🔞

А, слушай, про эту вашу requestAnimationFrame... Ну, это такая штука в JavaScript, которая позволяет тебе делать анимации, не превращая браузер в слайд-шоу для пенсионеров. Она, блядь, синхронизируется с родным циклом отрисовки браузера — обычно это 60 кадров в секунду, чтобы глаза не вытекали.

Чем она офигенна, ёпта:

  • Не грузит систему вхолостую, как какой-нибудь дебил, который долбит в закрытую дверь. Если на экране ничего не меняется — она и не дергает движок. Умная, сука.
  • Если пользователь свернул вкладку — она тупо засыпает. Не тратит заряд батареи и процессор на ерунду, в рот меня чих-пых! Экономист, блядь.

Как этим пользоваться, не сломав себе всё:

function animate() {
  // Тут твоя магия: двигаем квадратик, крутим спинер, что угодно
  element.style.left = (parseInt(element.style.left) + 1) + 'px';

  // И самое главное — говорим: "Эй, давай ещё разок, как только будет готов следующий кадр!"
  requestAnimationFrame(animate);
}

// Поехали, блядь!
requestAnimationFrame(animate);

А что было раньше? Да setTimeout с setInterval, конечно. Ну, это как пытаться синхронизировать часы по бою курантов из соседнего города — вроде идея есть, но нихуя не точно. Они отрисовку не ждут, поэтому могут пытаться впихнуть невпихуемое, создавая тормоза и рывки. Короче, requestAnimationFrame — это цивилизованно, а старые методы — это уже, простите, манда с ушами для простых анимаций.