Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
requestAnimationFrame — это метод браузера, который позволяет выполнить функцию перед следующим перерисовыванием кадра. Используется в основном для создания плавных анимаций и оптимизации рендеринга.
const id = requestAnimationFrame(callback);
function animate(time) {
// обновляем состояние или перемещаем элемент
box.style.transform = `translateX(${time / 10}px)`;
requestAnimationFrame(animate); // продолжаем цикл
}
requestAnimationFrame(animate);
Преимущества:
setInterval / setTimeout для анимации.requestIdleCallback — это метод, который позволяет выполнять задачи, когда браузер "свободен" — в периоды простоя.
Подходит для задач, не критичных к времени выполнения: фоновая аналитика, неважный рендеринг, работа с localStorage и т. д.
const id = requestIdleCallback(callback, { timeout: 1000 });
requestIdleCallback((deadline) => {
while (deadline.timeRemaining() > 0 && tasks.length > 0) {
doTask(tasks.shift());
}
});
Аргумент deadline
deadline.timeRemaining() — сколько миллисекунд осталось до перерисовки.deadline.didTimeout — флаг, если сработал timeout.Важно:
requestIdleCallback не поддерживается во всех браузерах (например, Safari), поэтому стоит использовать полифил или fallback на setTimeout.
requestAnimationFrame — при создании анимаций, прогресс-баров, слайдеров, канваса.requestIdleCallback — для неприоритетных задач: загрузка вторичных скриптов, аналитика, синхронизация с бэкендом.