La secuencia en la que se debe mostrar la matriz se está interrumpiendo
const arr = [1, 2, 3, 4, 5, 6]; const fooFunc = async (num) => { if (num % 2 === 0) { const data = await fetch(`https://jsonplaceholder.typicode.com/todos/${num}`); const obj = await data.json(); return obj; } return { name: 'test OBJ', des: 'just to see how will it display', num: num } } const arrNew = async () => { await Promise.all(arr.map(async (item) => { const newObj = await fooFunc(item); console.log(newObj, item); return item * 2; })) } arrNew();Sé que esto se debe a que solo algunos de los elementos tienen una promesa, pero ¿hay alguna manera de que podamos obtenerlos en la secuencia adecuada?
Enlace de violín Js: https://jsfiddle.net/Lu0f3psa/2/
puedes probar así
const arr = [1, 2, 3, 4, 5, 6]; const fooFunc = async (num) => { if (num % 2 === 0) { const data = await consumeAPI(num); const obj = data.json(); return obj; } return { name: 'test OBJ', des: 'just to see how will it display', num: num } } const arrNew = async () => { await Promise.all(arr.map(item => { const newObj = await fooFunc(item); console.log(newObj, item); return item * 2; })) } const consumeAPI = (num) => { // here we resolve the promise after api consumed return new Promise(resolve => { fetch(`https://jsonplaceholder.typicode.com/todos/${num}`).then(response => { resolve(response); }); }) } arrNew();