Печать отметки времени в файле без изменения значения отметки времени - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь распечатать текущую метку времени в файле, используя Таймеры в Nodejs.Если я использую setInterval, я могу напечатать текущую временную метку в выходном файле, но значение ее никогда не изменяется ... (она принимает первое значение временной метки, а затем просто печатает ее каждые 1000 мс....)

Это был код:

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 (прокомментировал строку с setInterval из метода run () и использовал2 строки, которые сейчас прокомментированы);результат этого был:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...