Descubrí que no es sencillo filtrar una lista de valores de promesas, así que probé el enfoque en esta pregunta (respuesta principal).
La diferencia es que estoy usando esto dentro de useEffect en React.
Mi matriz de results está vacía fuera de la función async getData :
// helper function async function filter(arr, callback) { const fail = Symbol(); return ( await Promise.all(arr.map(async (item) => ((await callback(item)) ? item : fail))) ).filter((i) => i !== fail); } useEffect(() => { if (!stateData) { let results = []; async function getData() { const res = await filter(data.slice(0, 5), async (item) => { const boolRes = await myAsyncFunction(item); return boolRes; }); // results has data results.push(...res); } getData(); console.log(results) // is empty, but results inside getData has data } }, []); ¿Alguna idea de cómo puedo sacar los datos de getData de forma segura?