Estoy tratando de recorrer una matriz y llamar a una promesa, y en función de ese resultado, actualiza la variable. El código funciona como quería, pero me preocupa si esta es una buena manera de escribirlo. ¿Hay mejores formas? Gracias de antemano.
/** * * u/returns Resolves a promise and returns value 'b' */ async function generatePromise() { return Promise.resolve('b'); } async function main() { let showWarning = false; // List of users const users = ['a', 'b', 'c']; //Looping through users array and compare the result from promise and update showWarning boolean await users.reduce(async (promise, user) => { await promise; const result = await generatePromise(); if (result === user) showWarning = true; }, Promise.resolve()) console.log(showWarning) } main();Parece innecesariamente complicado y la lógica es algo al revés. Suponiendo que generatePromise siempre devolverá la misma respuesta, ¿por qué lo llamarías varias veces? Llámelo una vez y verifique si el valor está contenido en la matriz:
const showWarning = users.includes(await generatePromise()); Si es necesario llamar a la función varias veces (por ejemplo, porque podría devolver una respuesta diferente por entrada/usuario), entonces puede usar un bucle for simple:
for (const user of users) { if (user === await generatePromise()) { showWarning = true; break; // why check other users if `showWarning` won't change anymore? } }