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

376
Visualizações
¿`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 Respostas
Responde à pergunta

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 Relatório

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