Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda