tg-me.com/frontendproglib/6352
Last Update:
requestIdleCallback — это способ запускать задачи в свободное отрисовке браузера время, чтобы не мешать главному потоку и не тормозить интерфейс.
Почему важно:
Как использовать:
1. Запускаем задачу, когда браузер «свободен»:
requestIdleCallback(() => {
// Эта операция не помешает UI
localStorage.setItem('draft', JSON.stringify(formData));
});
2. Полифил для браузеров без поддержки (например, Safari, Firefox):
const ric = window.requestIdleCallback || function (cb) {
return setTimeout(() => cb({ timeRemaining: () => 0 }), 1);
};
3. Пример: предзагрузка данных во время простоя
requestIdleCallback(() => {
fetch('/api/hints')
.then(res => res.json())
.then(storeHints);
});
4. Используем timeRemaining() для контроля:
requestIdleCallback(deadline => {
while (deadline.timeRemaining() > 0 && tasks.length) {
runTask(tasks.pop());
}
});
Когда использовать:
— Метрики и логирование
— Предзагрузка и кеширование
— Фоновая запись в IndexedDB
— Подсказки, превью и прочий «сервисный» UI
⚠️ requestIdleCallback не поддерживается в Safari и Firefox. Для кроссбраузерности используйте полифил, как показано выше.
#буст