【发布时间】:2021-03-22 09:39:37
【问题描述】:
我有一个 forEach,我在其中读取数据并将数据写入文件,(不想将其更改为一次全部写入)但它只写入最后一个循环,在此之前它不会写入任何内容。注意(combinedOutput)我正在写入文件,每个循环都会更改,因此它只写入combinedOutput 的最后一个值。这是怎么回事?我需要每次都关闭一个文件吗?
dev_users.forEach((user, i) => {
fs.readFile('name.json', function(err, data) {
var json = JSON.parse(data);
json.push(combinedOutput);
fs.writeFile('name.json', JSON.stringify(json), (err) => {
if (err) {
console.log(err);
}
});
});
}
【问题讨论】:
-
嗯,一种代码味道是您在同步 forEach 循环中执行异步逻辑。
-
@Taplar 啊谢谢你!!!!!!上帝真笨
-
另外,你为什么一遍又一遍地读写同一个文件。只需累积您想要的数据并一次写入即可。
-
"我不想把它改成一次性写完" - 嗯,这正是你应该做的。你为什么不想这样做?
标签: javascript node.js foreach fs