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

225
Visualizações
¿Debo devolver una promesa en una función de devolución de llamada onFetch de JS Service Worker si no quiero hacer nada con la solicitud original?

Mi escenario es el siguiente:

  1. Tengo una aplicación web progresiva que usa un Service Worker donde necesito capturar la solicitud y hacer algo con ella cada vez que el usuario solicita un recurso o deja la URL actual
  2. Estoy manejando eso agregando una devolución de llamada al evento de búsqueda del trabajador
  3. Solo me importan los recursos solicitados dentro de nuestro dominio (por ejemplo, example.com)
  4. Si el recurso solicitado está dentro de nuestro dominio, devuelvo el resultado de la promesa de una fetch regular, por lo que ya está cubierto
  5. Pero, si el recurso solicitado está fuera de mi dominio (como se muestra en el fragmento a continuación) , quiero que la solicitud original continúe.
  6. Actualmente solo estoy haciendo una return simple si el escenario en la viñeta 5 es verdadero

Fragmento de mi código actual:

 function onFetch(event) { if (!event.request.url.startsWith("example.com")) { return; } else { event.respondWith( fetch(event.request) .then(req => { // doing something with the request }) .catch((error)=> { // handle errors etc. }) .finally(()=> { // cleanup }) ); } } self.addEventListener('fetch', onFetch);

Mi pregunta: ¿Está bien si simplemente no devuelvo nada como en el fragmento, o necesito devolver algo específico, como una nueva promesa al obtener la solicitud original (como lo estoy haciendo en el bloque else) ?

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está absolutamente bien hacer lo que estás haciendo. No llamar a event.respondWith() es una señal para el navegador de que un controlador de fetch dado no va a generar una respuesta a una solicitud dada, y puede estructurar su código para que return temprano para evitar llamar a event.respondWith() .

Es posible que tenga varios controladores de fetch registrados, y si el primero regresa sin llamar a event.respondWith() , el siguiente controlador de fetch tendrá la oportunidad de responder. Si todos los controladores de fetch se han ejecutado y ninguno de ellos llama a event.respondWith() , el navegador manejará automáticamente la solicitud como si no hubiera ningún trabajador de servicio, que es lo que desea.

En términos del comportamiento observado, no llamar a event.respondWith() termina pareciéndose a lo que sucedería si llamas a event.respondWith(event.request) . Pero hay una sobrecarga involucrada en hacer una solicitud fetch() dentro de un trabajador de servicio y luego pasar el cuerpo de la respuesta del subproceso del trabajador de servicio al programa principal, y evita esa sobrecarga si no llama a event.respondWith() . Por lo tanto, recomendaría el enfoque que está tomando.

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