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?
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:
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.