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

247
Vistas
Abortar una búsqueda de JS () después de enviar la solicitud y antes del tiempo de espera/descarga

Mi problema:

Actualmente estoy intentando enviar varias solicitudes fetch() a una URL sin tener que esperar la respuesta del servidor.

El caso de uso exacto es construir una pequeña extensión de Chrome que aumente un contador en un servidor externo (sobre el cual no tengo control) que se incrementa en las solicitudes GET.

Pero, por el bien de UX, me gustaría hacer esto lo más rápido posible.

Lo que probé:

Mi primer intento fue cancelar la búsqueda después de 100 milisegundos.

Esto funciona bien con una buena conexión y una computadora rápida, pero si no tengo ambos, la búsqueda () se cancela demasiado pronto: la solicitud nunca se envía.

Aquí está el código que tengo hasta ahora:

 let controller = new AbortController(); let timer = setTimeout(() => controller.abort(), 100); await fetch(url, {signal: controller.signal}).catch(err => { if (err.name === 'AbortError') { } }); clearTimeout(timer);

Pregunta:

¿Hay alguna manera de saber cuándo una recuperación ha pasado la parte de "enviar solicitud" de la recuperación para poder cancelarla allí mismo?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Estoy tratando de enviar varias solicitudes a una url sin tener que esperar la respuesta del servidor.

Eso es lo que se supone que hace sendBeacon , no es necesario involucrar fetch .

Si eso no cumple con sus requisitos, aún puede usar fetch y simplemente no esperar la respuesta ; nada lo obliga a usar await .

¿Hay alguna manera de saber cuándo una recuperación ha pasado la parte de "enviar solicitud" de la recuperación para poder cancelarla allí mismo?

No. De todos modos, abortar la solicitud no es la solución correcta. Tenga en cuenta que incluso al cerrar la conexión solo después de enviar la solicitud HTTP, el servidor podría notarlo y no procesará la solicitud sin un destino de escritura para la respuesta.

about 4 years ago · Juan Pablo Isaza Denunciar

0

si desea enviar una solicitud pero no necesita el cuerpo de la respuesta, debe enviar usando el método HEAD, esto le indica al servidor que solo responda con los encabezados de la llamada y no con el cuerpo, para que pueda verificar el estado o tipo de contenido, etc. que está en el paquete de encabezado

envíe 10 solicitudes lo más rápido posible y luego espere las respuestas

 const pending=[]; for(let i=0;i<10:i++) { pending.push(fetch(url, {method:"HEAD"}); } for(const req of pending){ const res = await req; //check for a 200 code or any other bodyless data }

o si realmente no le importa la respuesta, ya que no hay necesidad de esperar a que se complete la promesa

 for(let i=0;i<10:i++) { fetch(url, {method:"HEAD"}); }

abortar es para cuando desea finalizar la llamada incluso si no se ha enviado

como menciona @Bergi, si solo desea hacer ping a la URL, puede usar

 navigator.sendBeacon(url)

pero esto enviará una solicitud posterior que le dará mucho menos control de lo que hace con la solicitud

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