Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

238
Views
¿ExtendableEvent.waitUntil() tiene algún tiempo de espera o se puede cancelar?

El evento de instalación del trabajador del servicio recibe una instancia de ExtendableEvent para su controlador, que puede usar para pausar el registro llamando al método waitUntil() y pasar una promesa. p.ej

 // inside service worker self.addEventListener('install', function(event) { ... event.waitUntil(promise1); console.log("waiting for promise1"); });

Mi pregunta es si hay alguna forma de cancelar la espera después de un tiempo o que el registro de SW permanezca indefinidamente en la fase de "intentar instalar" mientras esa promesa no se resuelva o rechace. Como no vi ninguna opción de tiempo de espera o cancelación con el método waitUntil.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Primero, un pequeño detalle: el método InstallEvent waitUntil() de InstallEvent no detiene el registro. El registro del trabajador del servicio es distinto de la ejecución de la fase de install del trabajador del servicio registrado. (Hay más antecedentes en esta respuesta ).

Si llama a waitUntil() dentro de un controlador de eventos de install , el trabajador del servicio no saldrá del estado de installing hasta que se resuelva la promesa o hasta que se alcance un tiempo de espera específico del navegador, momento en el que creo que la promesa será tratado como si lo rechazara. Este tiempo de espera no forma parte de la especificación del trabajador del servicio y puede variar de un navegador a otro, por lo que no confiaría en que se establezca en ningún valor específico.

Parece que le gustaría imponer su propio tiempo de espera determinista con un límite estricto sobre cuánto tiempo deben esperar los usuarios. Si ese es el caso, puede hacerlo creando una nueva Promise y dentro de eso, combinando su operación asíncrona original con una llamada a setTimeout() .

 const TIMEOUT_MS = ...; self.addEventListener('install', (event) => { const originalPromise = ...; const promiseWithTimeout = new Promise((resolve, reject) => { const id = setTimeout( () => reject(new Error(`Timed out after ${TIMEOUT_MS}ms`)), TIMEOUT_MS, ); originalPromise.then((result) => { clearTimeout(id); resolve(result); }).catch((err) => reject(err)); }); event.waitUntil(promiseWithTimeout); });
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!