Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

244
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda