gpt4 book ai didi

javascript - 在 Nodejs 中定期写入文件

转载 作者:行者123 更新时间:2023-11-30 09:19:23 25 4
gpt4 key购买 nike

我有一个通过异步调用找到的值 AA 会不断变化。所以我想做一些事情,比如每 10 秒记录一次,并将 A 的值写入带有时间戳的文件。

所以我以此为起点https://codereview.stackexchange.com/questions/141329/write-log-file-in-nodejs-with-setinterval

var fs = require('fs');
var tStamp = new Date().now;
// getA() is the a async function
async function log(){
fs.appendFile('c:/log.txt', tStamp + getA() , (err) => {
if (err) throw err;
logText = '';
});
}
setInterval(log, 5000);

但它不起作用。该函数不会重复调用。它似乎只被调用一次,这显然不是我所希望的。我想也许可以使用类似的东西

var pieceOfLog = await getA();

在上面的函数内部可能会有所帮助,但事实并非如此。那么在这里做什么呢?如何

  • 获取A的值
  • 记录下来
  • 无限重复。

我应该使用完全不同的方法吗?我在我的代码中犯了一个愚蠢的错误吗?我应该只使用像 Cron 这样的库来为我做这件事吗?

最佳答案

new Date().nowundefined。将其更改为 Date.now()。这是一个静态函数。

确保 getA() 真的是异步的?

除此之外......

如果您不需要精确度——比如,如果一次在 10.25 秒后发生,然后在下一次在 10.12 秒后发生,等等——那么 setInterval(functionThatLogs, 10000) 应该这样做。只需确保 functionThatLogs 是一个可以快速附加到文件的函数。

如果文件很大或您正在写入的数据很重要,您可能需要查看管道、流等。但是您的问题是关于如何每 10 秒记录一次……这可能是最简单的解决方案。

这是您提供的适用于我的代码的简化版本。我希望它也对你有用。它删除了 getA(),因此如果此代码有效而您的无效,则可能是 getA() 有问题。

var fs = require('fs');
var path = require('path');
async function log(){
fs.appendFile(path.join(__dirname, 'log.txt'), Date.now() + '\n', (err) => {
if (err) throw err;
logText = '';
});
}
setInterval(log, 5000);

关于javascript - 在 Nodejs 中定期写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52707041/

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