我正在尝试读取CSV,用一些外部API丰富数据,然后编写一个新的CSV。
我的问题是要等到所有的调用API已经完成之前写CSV。到目前为止,我写了每一行,但最后一行-结束事件触发器“太早”,它不等待我的最后一个调用完成。
我是这么做的:
const stream = await fs
.createReadStream('./foo.csv')
.pipe(parse({ delimiter: ',', from_line: 2 }))
.on('data', async function (row) {
try {
stream.pause()
const foo1 = row[0]
const foo2 = await externalAPI(row[1])
const newRow = [foo1, foo2]
data.push(newRow)
} finally {
stream.resume()
}
})
.on('end', function () {
stringify(data, (err, output) => {
fs.writeFileSync('demoA.csv', output)
})
})
.on('error', function (error) {
console.log(error.message)
})
1条答案
按热度按时间zz2j4svz1#
只需完全读取csv文件,调用外部API,然后将输出写入新的csv文件。