es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucles asíncronos en JavaScript

Estoy intentando sumar los resultados obtenidos a través de una serie de llamadas asíncronas.
let sum = 0;
for(const id of ids) {
const res = await getRes(id);
sum += res;
}

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

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, esta es una forma válida de resumir los resultados de una serie de llamadas asíncronas. Sin embargo, es importante tener en cuenta que este fragmento de código solo se puede usar dentro de una función asíncrona.

    Una solución alternativa que no depende del bucle for…of y la palabra clave await sería utilizar Promise.all() para ejecutar todas las llamadas getRes() en paralelo, y luego usar reduce() para sumar los resultados. Aquí hay un ejemplo:

    const results = await Promise.all(ids.map(id => getRes(id)));
    const sum = results.reduce((acc, curr) => acc + curr, 0);
    

    Este enfoque puede ser más eficiente si las llamadas getRes() tardan mucho tiempo en ejecutarse, ya que permite que se ejecuten en paralelo en lugar de una por una. Sin embargo, es importante tener en cuenta que este enfoque puede no ser adecuado si el orden de los resultados es importante.

Comments are closed.