将类方法调用到在Typescript中不起作用的返回函数回调中

时间:2019-03-04 21:34:44

标签: node.js angular typescript

我正在使用server来安排node-schedule方法。我正在尝试

synchronizeAll()

该项目的结果

constructor() {
    var schedule = require('node-schedule');

    var rule = new schedule.RecurrenceRule();

    rule.minute = new schedule.Range(0, 59, 5);

    this.initializeDb().then(() => {
        schedule.scheduleJob(rule, function () {
            console.log('works!!');
            this.synchronizeAll();
        });
    });
}


synchronizeAll() {
    let synchronizeProjects: SynchronizeProjects;

    synchronizeProjects.synchronize().then(result => {
        console.log(result);
    });
}

我知道问题的发生是因为我正在调用calback函数中的类方法,但是我不知道如何纠正

1 个答案:

答案 0 :(得分:1)

关键字在scheduleJob的回调函数中丢失了原始引用。您可以在this.initialiseDB()调用之前将 this 存储在变量中(让t = this),然后执行t.synchronizeAll(),或者可以保留 this 通过使用如下所示的箭头功能进行引用。

schedule.scheduleJob(rule , () => { this.synchronizeAll(); }