From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../web/api/extendableevent/waituntil/index.html | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 files/ru/web/api/extendableevent/waituntil/index.html (limited to 'files/ru/web/api/extendableevent/waituntil') diff --git a/files/ru/web/api/extendableevent/waituntil/index.html b/files/ru/web/api/extendableevent/waituntil/index.html new file mode 100644 index 0000000000..136770f499 --- /dev/null +++ b/files/ru/web/api/extendableevent/waituntil/index.html @@ -0,0 +1,77 @@ +--- +title: ExtendableEvent.waitUntil() +slug: Web/API/ExtendableEvent/waitUntil +translation_of: Web/API/ExtendableEvent/waitUntil +--- +

{{APIRef("Service Workers API")}}

+ +

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

+ +

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

+ +

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

+ +

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

+ +
+

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

+
+ +

Синтаксис

+ +
extendableEvent.waitUntil(promise);
+ +

Параметры

+ +

{{jsxref("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());
+});
+ +

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

+ + + + + + + + + + + + + + +
СпецификацииСтатусКомментарий
{{SpecName('Service Workers', '#dom-extendableevent-waituntil', 'waitUntil()')}}{{Spec2('Service Workers')}}Изначальное определение
+ +

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

+ + + +

{{Compat("api.ExtendableEvent.waitUntil")}}

+ +

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

+ + -- cgit v1.2.3-54-g00ecf