sirve que prevent para hace event javascript-events promise service-worker

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 y activate , retrasa el cambio de estado del trabajador del servicio a la installed y activated (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 generalmente waitUntil 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.