我试图使用Node.js中的Timers将当前时间戳打印到文件中。
如果我使用的是setInterval
,则可以在输出文件中打印当前时间戳,但是它的值永远不会改变...(它使用时间戳的第一个值,然后每次打印一次1000ms ....)
这是代码:
export class App {
private getData() {
return Date.now();
}
private async printToFile(path: string, data: number) {
try {
fs.writeFile(path, data + '\n', { 'flag': 'a' }, function (err) {
if (err) {
console.error(err);
}
});
//setTimeout(this.printToFile, 1000, path, this.getData());
}
catch (err) {
throw err;
}
}
async run() {
try {
//setTimeout(this.printToFile, 1000, "output.txt", this.getData());
let interval = setInterval(this.printToFile, 1000, "output.txt", this.getData());
}
catch (err) {
console.error(err)
}
}
}
我还尝试使用setTimeout
(在run()方法中用setInterval
注释了该行,并使用了现在注释的两行);结果是:
UnhandledPromiseRejectionWarning: TypeError: this.getData is not a function
好。如果我使用Date.now()
而不是this.getData()
,则会给我一个新错误:
UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_CALLBACK]: Callback must be a function
(关于this.printToFile
。...不知道printToFile
是什么...。)
进行了更多测试...如果我将所有计时器替换为console.log(..)
,则它工作正常。如果在setTimeout(this.printToFile, 1000, "output.txt", this.getData());
函数中添加一个run()
之类的计时器,则会得到以前的错误:
UnhandledPromiseRejectionWarning: TypeError: this.getData is not a function