javascript events - que - ¿Qué hace event.waitUntil en el trabajador de servicio y por qué es necesario?
preventdefault submit (1)
Como dice la descripción, the ExtendableEvent.waitUntil() method extends the lifetime of the event
. Si no lo llama dentro de un método, el trabajador de servicio podría detenerse en cualquier momento (consulte la especificación ).
Por lo tanto, el método waitUntil
se usa para decirle al navegador que no waitUntil
al trabajador del servicio hasta que la promesa pasada a waitUntil
se resuelva o se rechace.
Acerca de sus preguntas específicas:
- En el caso de los eventos de
install
yactivate
, retrasa el cambio de estado del trabajador del servicio a lainstalled
yactivated
(consulte la especificación del método waitUntil , en particular la última parte del párrafo). - Creo que el resto de mi respuesta ya respondió por qué se necesita.
MDN sugiere que haga lo siguiente para crear y rellenar la memoria caché del trabajador de servicios:
this.addEventListener(''install'', function(event) {
event.waitUntil(
caches.open(''v1'').then(function(cache) {
return cache.addAll([
''/sw-test/'',
''/sw-test/index.html'',
... etc ...
]);
})
);
});
No entiendo ese código. El método waitUntil
está documentado, y parece que el código anterior es el único propósito de su existencia en este momento:
El método ExtendableEvent.waitUntil () extiende la duración del evento. Cuando se llama en un EventHandler asociado al evento de instalación, demora el tratamiento del trabajador de instalación como instalado hasta que la Promesa pasada se resuelva con éxito. Esto se usa principalmente para garantizar que un trabajador de servicio no se considere instalado hasta que se completen todos los cachés del núcleo de los que depende.
Lo que no entiendo es:
- ¿Cómo
waitUntil
generalmentewaitUntil
al flujo de código? ¿Evita que el evento se propague hasta que se resuelva la promesa? - ¿Por qué es necesario en el contexto de abrir la caché de trabajadores?
Estoy haciendo esta pregunta porque tengo problemas con el código anterior y me gustaría entenderlo.