ExtendableEvent.waitUntil()

Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского

Метод ExtendableEvent.waitUntil() сообщает диспетчеру событий, что выполняется действие. Также этот метод может быть использован, для того чтобы определить было ли то действие успешным. В рамках service workers, waitUntil() сообщает браузеру, что действие продолжается пока обещание не завершится (promise settles) и браузер не должен прерывать service worker если он хочет, чтобы это действие завершилось.

События install в service workers используют waitUntil() чтобы задержать service worker в installing фазе пока не завершатся задачи. Если обещание переданное в waitUntil() отклоняется, установка считается неудачной и устанавлеваемый service worker отбрасывается.  В первую очередь это используется для гарантии того, что service worker не рассматривается как установленный (installed), пока все основные кэши на которые он зависит успешно не заполнены.

События activate в service workers используют waitUntil() для размещения в буфере функциональных событий таких как fetch и push пока обещание переданное в waitUntil() не завершится успешно. Это дает service worker время, чтобы обновить схемы базы данных и удалить устаревшие caches, таким образом другие события могут полагаться на полностью обновленное состояние.

Метод waitUntil() должен быть изначально вызван внутри события обратного вызова (event callback), но после этого он может быть вызван множество раз, до тех пор пока все обещания переданные в него не завершатся успешно.

Примечание: Поведение описанное в параграфе выше, было исправлено в Firefix 43 (смотрите баг 1180274).

Синтаксис

extendableEvent.waitUntil(promise);

Параметры

Promise.

Возвращаемое значение

undefined.

Примеры

Использование waitUntil() внутри события install в service worker:

addEventListener('install', event => {
  const preCache = async () => {
    const cache = await caches.open('static-v1');
    return cache.addAll([
      '/',
      '/about/',
      '/static/styles.css'
    ]);
  };
  event.waitUntil(preCache());
});

Спецификации

Спецификации Статус Комментарий
Service Workers
Определение 'waitUntil()' в этой спецификации.
Рабочий черновик Изначальное определение

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
waitUntil
Экспериментальная
Chrome Полная поддержка 40Edge Полная поддержка 17Firefox Полная поддержка 44IE Нет поддержки НетOpera Полная поддержка 24Safari Нет поддержки НетWebView Android Полная поддержка 40Chrome Android Полная поддержка 40Firefox Android Полная поддержка 44Opera Android Полная поддержка 24Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 4.0
Asynchronous waitUntil
Экспериментальная
Chrome ? Edge Полная поддержка 17Firefox Полная поддержка 53IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android ? Chrome Android ? Firefox Android Полная поддержка 53Opera Android ? Safari iOS Нет поддержки НетSamsung Internet Android ?

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.

Смотрите также