Reduce con Promesas Encadenadas
Dificultad: Difícil JavaScript advanced coding
const nums = [1, 2, 3];
const result = await nums.reduce(async (acc, n) =>
(await acc) + n, Promise.resolve(0));
console.log(result); 📥 Inputs:
nums = [1, 2, 3]
❓ ¿Cuál es el output?
Ingresa tu respuesta abajo
💡 Explicación
¡TRUCO! Aunque funciona, hay un problema oculto: reduce NO espera cada promesa antes de la siguiente iteración. Las promesas se crean todas al mismo tiempo, creando una cadena de 'await (await (await 0) + 1) + 2) + 3'. Con operaciones async reales (fetch, setTimeout), el orden puede ser impredecible. La forma correcta es usar un for...of loop o Promise.all() para controlar la ejecución. ¡Reduce con async es una trampa común!
¿Sabías que reduce + async puede ser peligroso? 🤯 Comenta la solución correcta! 👇