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

168
Vistas
Nodo JS: en cuanto al tiempo de ejecución, ¿está generando una serie de promesas y luego usando Promise.all mejor que hacer un bucle y esperar instantáneamente cada tarea?

Supongamos que tenemos una matriz de objetos que tenemos que cargar en un servicio en la nube, el servicio hará algo con cada objeto y devolverá un resultado. La biblioteca del cliente del servicio tiene una sola función que carga el objeto y espera la respuesta. Qué código se ejecutará más rápido:

 async function extractDataInstantAwait(documents) { const results = []; for (const doc of documents) { results.push(await client.extractData(doc)); } return results; }
 async function extractDataPromiseAll(documents) { const results = []; for (const doc of documents) { results.push(client.extractData(doc)); } return Promise.all(results); }

Hasta donde yo sé, Nodejs no ejecuta código asíncrono en múltiples subprocesos, por lo que uno puede pensar que no hay diferencia entre ellos. Pero, dado que cada llamada a client.extractData puede tener que esperar una respuesta, el ciclo de eventos de Nodejs debería cambiar a la próxima promesa, hacer las cosas allí (cargar otro documento) y repetir. Tal vez, si el servicio es lento para analizar cada objeto, pero sabemos que crea nuevos subprocesos para cada operación, ¿podemos lograr algún tipo de aceleración simultánea?

¿Es correcta mi lógica?

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

0

Promise.all es más rápido, porque Promise.all permite que todas las promesas se ejecuten en paralelo, por lo que su tiempo de ejecución será el tiempo de ejecución de la promesa más larga (o cerca de ella).

Si lo hace en bucle, las promesas se ejecutan una tras otra, por lo que su tiempo de ejecución será la suma de los tiempos de ejecución de todas las promesas.

Si hay que esperar tres promesas A, B y C que toman respectivamente 200, 300 y 500 ms. Con Promise.all, se ejecutarán simultáneamente y tendrá que esperar a C durante 500 ms (A y B se habrán completado antes de eso). Con un bucle, tendrá que esperar 200 ms para A, luego esperar 300 ms para B, luego esperar 500 ms para C, por lo que esperará 1000 ms en total.

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