在文件中打印时间戳不更改时间戳值

时间:2019-04-16 11:24:06

标签: node.js typescript timer settimeout setinterval

我试图使用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

0 个答案:

没有答案