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

141
Views
Cómo asegurarse de que `self.skipWaiting()` funcione mientras se permiten solicitudes POST en el evento de búsqueda del trabajador del servicio

He notado que mi trabajador de servicio no responde a self.skipWaiting() cuando todavía hay tareas por ejecutar.

En el evento de fetch de mi trabajador de servicio, veo varias encuestas de Firebase que usan solicitudes HTTP POST.

Si manejo estas solicitudes en el trabajador de servicio así:

 self.addEventListener("fetch", (event) => { if (event.request.method === "POST") { return event.respondWith(new Response(null, {status: 444})) } ... })

Entonces self.skipWaiting() siempre funciona como se esperaba.

Sin embargo, si hago lo siguiente:

 self.addEventListener("fetch", (event) => { if (event.request.method === "POST") { return event.respondWith(fetch(event.request)) } ... })

Entonces self.skipWaiting() parece no tener efecto. En las herramientas de desarrollo de Chrome, el nuevo trabajador de servicio todavía no está activo (y tampoco tiene efecto hacer clic en el enlace azul skipWaiting ). Captura de pantalla de Chrome devtools que muestra al nuevo trabajador de servicio esperando para activarse

Como resultado, parece que tengo que elegir entre asegurarme de que self.skipWaiting() funcione y permitir las solicitudes de sondeo de Firebase, pero no ambas. ¿Hay alguna manera de hacer que self.skipWaiting() funcione mientras se siguen permitiendo las solicitudes de sondeo de Firebase?

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

0

No veo en su código dónde está llamando a self.skipWaiting() , pero lo principal que debe saber sobre esa función es que "voltea" una bandera e intenta activar el trabajador del servicio de waiting . No estoy seguro de qué parte de esa secuencia no funciona como se esperaba, y tampoco estoy seguro de si estás describiendo algo que sucede solo en Chrome o también en otros navegadores. Si observa un comportamiento inesperado solo en Chrome, la mejor opción es presentar un error .

Dicho esto, con el fin de proporcionar una solución alternativa, quería decir que no es necesario llamar a event.respondWith() dentro de un controlador de eventos de fetch . Si todos sus controladores de fetch se completan sin que ninguno de ellos llame a fetchEvent.respondWith() , entonces se usará el comportamiento de red predeterminado del navegador en su lugar. Por lo tanto, podría reestructurar su controlador de fetch de la siguiente manera y quizás solucionar el problema.

 self.addEventListener("fetch", (event) => { if (event.request.method === 'POST') { return; } // Your non-POST response logic goes here. });
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!