déjame ir rápidamente al grano. Tengo una función que obtiene algunas identificaciones de usuario. Funciona muy bien.
const allIds = await fetchAllIds(someUrl);Ahora el problema viene cuando quiero hacer algo diferente. Me gustaría recorrer esas identificaciones y hacer algunas cosas asíncronas en espera con ellas. Es decir, obtener principalmente algunos datos para cada uno con axios y modificarlos en consecuencia.
allIds.map(async (id) => { // 1. Fetch some data (try, catch and await) // 2. Modify the id based on that data // 3. Return the id, namely replace the old one }); Al final de mi código, simplemente devuelvo allIds . El problema es que los devuelve sin esperar a que la función map se ejecute por completo. Probé diferentes métodos y ninguno parece estar funcionando. ¿Podría por favor ayudarme a hacer que funcione o tal vez sugerir algunas otras posibles soluciones? ¡Gracias por adelantado!
Básicamente tienes dos problemas:
map .map devolverá una serie de Promesas y no las estás await todas.Asi que:
const promises = allIds.map(...); const replacement_ids = await Promise.all(promises); return replacement_ids;Usa esto en su lugar.
const newList = await Promise.all(allIds.map(id=>new Promise(async(res)=>{ // do your async here and get result; res(result); })));