gpt4 book ai didi

javascript - SetTimeout + fs.writeFile 删除我的对象

转载 作者:行者123 更新时间:2023-12-01 03:46:59 24 4
gpt4 key购买 nike

我有一个对象“rooms”,我尝试每 10 秒将其内容打印到文件“logging.json”中。

setTimeout(function(){
fs.writeFile('./logging.json',JSON.stringify(rooms,null,'\t'),function(err) {
if(err) return console.error(err);
console.log('done');
});
}, 10000);

第一次(10秒后)它起作用了,我完成了我的文件logging.json。但是第二次调用该函数时,我的对象“rooms”的内容被删除,并且我获得的logging.json文件也为空。

此外,如果没有这部分代码,我的程序的其余部分也可以正常工作,因此我认为它不是来自其他内容。

您能告诉我为什么会出现这个问题以及如何解决它吗?

编辑:这是我尝试打印我的房间对象时在控制台中得到的内容。

[nodemon] restarting due to changes...
[nodemon] starting `node serveur.js`
[ { username: 'Bob', message: 'Hello' },
done
[nodemon] restarting due to changes...
[nodemon] starting `node serveur.js`
[]
done

另外,我不明白为什么服务器每 10 秒重新启动一次,这是不应该的。

最佳答案

当您使用 nodemon 时,您需要告诉 nodemon 忽略您正在编写的文件,否则整个应用程序将在每次更新文件时重新启动。这可以通过命令行完成,如下所示:

nodemon --ignore logging.json app.js

或者通过更新您的 nodemon 配置。

如果您想每 10 秒运行一次该函数,则需要使用 setInterval 而不是 setTimeoutsetTimeout 只会在 10 秒内运行一次。

每 10 秒替换文件中的所有内容:

const fs = require('fs')

let count = 0

setInterval(function() {
fs.writeFile('./test.txt', count, function (err) {
if(err) {
console.log(err)
}
})
}, 10000)

每 10 秒追加一次文件:

const fs = require('fs')

let count = 0

setInterval(function() {
const text = count++ + '\n'
fs.appendFile('./test.txt', text, function (err) {
if(err) {
console.log(err)
}
})
}, 10000)

关于javascript - SetTimeout + fs.writeFile 删除我的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43521392/

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