gpt4 book ai didi

node.js - 如何使用 async/await 在 node.js 中异步 createReadStream

转载 作者:行者123 更新时间:2023-12-01 11:16:29 28 4
gpt4 key购买 nike

我在使用 fs.creadReadStream 时遇到困难异步处理我的 csv 文件:

async function processData(row) {
// perform some asynchronous function
await someAsynchronousFunction();
}

fs.createReadStream('/file')
.pipe(parse({
delimiter: ',',
columns: true
})).on('data', async (row) => {
await processData(row);
}).on('end', () => {
console.log('done processing!')
})

我想在 createReadStream之前逐条读取每条记录后执行一些异步功能到达 on('end') .

然而, on('end')在我的所有数据完成处理之前被击中。有谁知道我可能做错了什么?

提前致谢!

最佳答案

我最近遇到了同样的问题。我通过使用一系列 promise 来修复它,并等待所有 promise 在 .on("end") 时解决。被触发。

import parse from "csv-parse";

export const parseCsv = () =>
new Promise((resolve, reject) => {
const promises = [];
fs.createReadStream('/file')
.pipe(parse({ delimiter: ',', columns: true }))
.on("data", row => promises.push(processData(row)))
.on("error", reject)
.on("end", async () => {
await Promise.all(promises);
resolve();
});
});

关于node.js - 如何使用 async/await 在 node.js 中异步 createReadStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50307139/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com