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

240
Views
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 answers
Answer question

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 Report

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 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!