gpt4 book ai didi

javascript - Node JS 同步读取一行文本

转载 作者:行者123 更新时间:2023-11-30 19:45:22 24 4
gpt4 key购买 nike

我有以下情况,其中我有 data.txt,包含数千行。

我的目标是读取这些文件的每一行并获取一些数据并将其存储在数组中。我使用 readlinefs.createReadStream

这是我做的:

const readingText = async () => {
const fileStream = fs.createReadStream(
"./data.txt"
);

const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});

let dd = [];
rl.on("line", line => {
dd.push(line.split(":")[1]);
});
rl.on("close", async line => {
console.log(dd);
return dd;
});
};

const someFunc = async () => {
try {
const ff = await readingText();
console.log(ff);
} catch (err) {
console.log(err);
return false;
}
};

someFunc();

问题是 console.log(ff) 将始终返回 undefinedconsole.log(dd) 正确返回所需的 dd 数组,这是为什么呢?以及如何让 console.log(ff) 等到 ff 变量被分配给 dd 数组的值?

谢谢

最佳答案

基于事件的执行不等待父异步函数。

试试这个:

const readingText = async () => {
return new Promise((resolve, reject) => {
const fileStream = fs.createReadStream(
"./data.txt"
);

const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});

let dd = [];
rl.on("line", line => {
dd.push(line.split(":")[1]);
});
rl.on("close", line => {
console.log(dd);
return resolve(dd);
});
});

};

const someFunc = async () => {
try {
const ff = await readingText();
console.log(ff);
} catch (err) {
console.log(err);
return false;
}
};

someFunc();

关于javascript - Node JS 同步读取一行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54995110/

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