Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод window.requestIdleCallback()
ставит в очередь функцию, которая будет вызываться во время периодов простоя браузера. Это позволяет разработчикам выполнять фоновую и низкоприоритетную работу в цикле основного события, без воздействия такими критично долгими событиями, как анимация и обработка ввода. Функции, обычно, вызываются в порядке очереди "первый вошёл - первый вышел"; однако функции обратного вызова с заданными timeout
, могут быть вызваны не по порядку, если необходимо запустить их до истечения таймаута.
Вы можете вызвать requestIdleCallback()
внутри callback-функции в режиме ожидания для планирования другого callback'а, который произойдёт не раньше, чем следующий проход через цикл событий.
timeout
настоятельно рекомендована для работы, в противном случае может пройти несколько секунд прежде, чем будет вызван обратный вызов.Синтаксис
var handle = window.requestIdleCallback(callback[, options])
Возвращаемое значение
Возвращает ID, который может быть использован для отмены callback'а, передав значение в метод window.cancelIdleCallback()
.
Параметры
callback
- Ссылка на функцию, что должна быть вызвана в ближайшем будущем, когда цикл событий в режиме ожидания. Функции передаётся объект
IdleDeadline
описывающий общее количество доступного времени и был ли выполнен callback, потому что таймаут истёк. options
Необязательный- Содержит опциональные параметры конфигурации. На текущий момент, определено только одно свойство:
timeout
: Если заданtimeout
и имеет положительное значение, а callback ещё не был вызван по времени наступления миллисекундного timeout, callback будет вызван в течение следующего периода простоя, даже если это может привести к негативному влиянию на производительность.
Пример
Посмотрите наш готовый пример в статье Cooperative Scheduling of Background Tasks API.
Спецификация
Спецификация | Статус | Комментарий |
---|---|---|
Cooperative Scheduling of Background Tasks | Предложенная рекомендация | Initial definition. |
Совместимость с браузерами
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 47 | Нет | 55 (55) | Нет | 34 | Нет |
Feature | Android Webview | Chrome for Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | 47 | 47 | 55.0 (55) | Нет | Нет | ? | Нет |
requestIdleCallback()
включён в Firefox 53 но по умолчанию отключён. По умолчанию включён, начиная с Firefox 55.