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

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

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