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

367
Views
¿`Promise.all` sufre el límite de conexiones simultáneas impuesto por el navegador?

Suponga que un servidor API usa HTTP/1.1 y el navegador tiene un límite de 6 conexiones TCP simultáneas por dominio. ¿Significa eso que si realizo 7 llamadas de API a la vez con Promise.all , entonces la última api tendrá que esperar a que la solicitud de la primera api regrese a través de la red?

 Promise.all([api(), api(), api(), api(), api(), api(), api()]) // 7 api calls

¿HTTP/2 también resuelve este problema con la multiplexación donde todas estas llamadas API estarán en la misma conexión para que no tengan que esperar nada?

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

0

Sí, pero esta no es una limitación particular de Promise.all . En general, una expresión como

 anotherFn([fn(), fn(), fn()])

es equivalente a hacer

 const r1 = fn(); const r2 = fn(); const r3 = fn(); anotherFn([r1, r2, r3]);

Todo lo que está dentro de la lista de argumentos se evalúa antes de pasar el resultado. Si el proceso de evaluación de todo hace un montón de llamadas a la API, la otra función, Promise.all u anotherFn , no puede hacer nada al respecto, porque ocurren antes de que se ejecute la función.

entonces, ¿la última API tendrá que esperar a que la solicitud de la primera API regrese a través de la red?

Si podemos suponer que las restricciones son como usted ha dicho, el navegador está limitado a 6 conexiones a la API a la vez, entonces sí.

Sí, HTTP/2 es de gran ayuda en este tipo de situaciones, porque solo necesitan una conexión por dominio y pueden enviar múltiples solicitudes a través de esa conexión, sin llegar al límite de conexión del navegador.

about 4 years ago · Juan Pablo Isaza Report

0

¿Significa eso que si realizo 7 llamadas de API a la vez con Promise.all, entonces la última API tendrá que esperar a que la solicitud de la primera API regrese a través de la red?

Sí, lo hace.

Su Promise.all([api(), api(), ...]) ejecutará inmediatamente todas las llamadas a la función api() . Eso hará que se envíen las primeras 6 solicitudes y la séptima se pondrá en cola hasta que finalice una de las primeras 6, en cuyo caso el navegador enviará la séptima.

Este comportamiento en realidad no tiene nada que ver con Promise.all() . El mismo comportamiento ocurriría si hicieras esto:

 const promises = [api(), api(), api(), api(), api(), api(), api()];

Incluso con solo esa declaración, la séptima solicitud http no se enviaría al host hasta que se completara una de las primeras 6. Se debe enteramente a los límites de conexión del navegador al mismo host.

FYI, Promise.all() seguirá funcionando y todas las solicitudes de API seguirán funcionando, solo tendrá que esperar un poco más para que se completen todas las solicitudes que si no estuviera alcanzando los límites de conexión.

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!