Aquí estoy tratando de llamar a cada fila en un archivo csv y dentro de ese ".on" podemos acceder a cada fila, así que estoy obteniendo algunos datos allí y luego insertando los datos obtenidos en una matriz, pero veo que llama a la búsqueda y luego va directamente a la siguiente fila en lugar de enviar los datos a la matriz. ¿Alguna idea de por qué no está enviando los datos a la matriz y luego pasa a la siguiente iteración?
var dataArray = []; fs.createReadStream('./data.csv') .pipe(csv()) .on('data', async function (row) { let data = await fetch(row.data); console.log(data); row.flag = data; dataArray.push(row); }) .on('end', async function () { console.log('data', dataArray); var result = json2csv(dataArray); fs.writeFileSync('./file.csv', result); });
Así es como lo hice, primero empujé todo el formulario de datos de fila ("datos") dentro de createreadstream en una matriz "arr". Luego, como sugirió @ChrisG, creó una matriz llamada promesa e introdujo todas las promesas en la matriz. Y al final llamado Promiss.all(promises[]).entonces obtuve lo que quería. @Bravo
let arr = []; let promises = [] fs.createReadStream(path) .pipe(csv()) .on('data', async function (row) { arr.push(row) }) .on('end', function () { console.log("data",arr.length) arr.forEach(async e => { let msg dataArray.push(e) promises.push(fetch(msg)) } }) Promise.all(promises).then((data) => { console.log("data",dataArray) data.forEach((e, index) => { let data = e.data dataArray[index].data = data }) var result = json2csv(dataArray); fs.writeFileSync(path, result) }) }) }