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

158
Vistas
bucles asíncronos en javascript

Estoy tratando de resumir los resultados que obtuve de una serie de llamadas asincrónicas

 let sum = 0; for(const id of ids) { const res = await getRes(id); sum += res; }

¿Es esta una forma válida de hacerlo? ¿Alguna solución mejor?

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

0

El código que has escrito parece ser correcto.

Para validarlo, puede escribir algunas pruebas unitarias, no puedo decir qué tan difícil es porque no sé qué está haciendo getRes y qué dependencias externas (si las hay) tiene que simular. En términos generales, debe adquirir el hábito de realizar pruebas unitarias de su código: uno de los beneficios que trae a la mesa es ofrecerle una forma de validar su implementación.

También puede considerar la idea de obtener los resultados en paralelo, esto puede acelerar las cosas. Nuevamente, no sé qué está haciendo getRes , pero supongo que realiza algún tipo de IO (por ejemplo, una consulta de base de datos). Dada la naturaleza de subproceso único de Javascript, cuando tiene un montón de operaciones asincrónicas independientes , siempre puede intentar realizarlas en paralelo y recopilar sus resultados, de modo que pueda agregarlos más tarde. Tenga en cuenta la negrita en la palabra independiente : para realizar un montón de operaciones en paralelo, deben ser independientes (si no lo son, se invalidará la corrección de su código).

Como estás realizando una suma de números, es seguro calcular los sumandos en paralelo.

Esta es la solución paralela más simple posible:

 async function sum(ids) { const getResTasks = ids.map(id => getRes(id)); const addends = await Promise.all(getResTasks); return addends.reduce((memo, item) => memo + item, 0); }

Preste atención: esta es una implementación ingenua. No sé cuántos elementos puede contener la matriz de ids. Si es posible que este número sea enorme (miles de elementos o más), un código como el anterior podría crear una gran carga en la dependencia externa utilizada para obtener la suma de los sumandos, por lo que se deben tomar algunas precauciones para limitar el grado de paralelismo.

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