Какое событие.waitUntil do в сервисном работнике и зачем это нужно?
MDN предлагает сделать следующее Для создания и заполнения кэша service worker:
this.addEventListener('install', function(event) {
event.waitUntil(
caches.open('v1').then(function(cache) {
return cache.addAll([
'/sw-test/',
'/sw-test/index.html',
... etc ...
]);
})
);
});
Я не понимаю этот код. The waitUntil
метод также документирован, и кажется, что приведенный выше код является единственной целью его существования на данный момент:
ExtendableEvent.метод waitUntil () продлевает срок службы событие. При вызове EventHandler, связанного с событием установки, он задерживает обрабатывать устанавливая работника как установлено, пока не будет пройдена Обещание успешно разрешается. Это в первую очередь используется для обеспечения service worker не считается установленным, пока не будет установлено все ядро кэши, от которых он зависит, заполнены.
чего я не понимаю, так это:
- как
waitUntil
обычно влияют на поток кода? Останавливает ли оно распространение событий, пока не разрешится обещание? - почему это необходимо в контексте открытия worker кэш?
Я задаю этот вопрос, потому что у меня проблемы с кодом выше, и я хотел бы его понять.
1 ответов
как говорится в описании,the ExtendableEvent.waitUntil() method extends the lifetime of the event
. Если вы не вызываете его внутри метода, работник службы может быть остановлен в любое время (см. спецификация).
Итак,waitUntil
метод используется, чтобы сказать браузеру не прекращать работу службы, пока обещание не передано waitUntil
либо разрешен, либо отклонен.
о ваших конкретных вопросах:
- в случае
install
иactivate
события, это задерживает состояние переключение сервисного работника наinstalled
иactivated
(см. спецификация метода waitUntil, в частности последняя часть абзаца). - я думаю, что остальная часть моего ответа уже ответила, Почему это необходимо.