将NodeJS议程就绪事件匿名函数转换为普通函数

Convert NodeJS agenda ready event anonymous function to normal function

我正在使用 NodeJS Agenda 模块进行作业调度。 在议程中有一项活动 'ready'

module.exports = function(agenda) {
 agenda.define('test', function(job, done) {

});

agenda.on('ready', function() {
 agenda.every('*/5 * * * * *', 'test');
 agenda.start();
});

}

在就绪事件里面我使用的是匿名函数,但我不想使用匿名函数,想创建一个普通函数。

例如

module.exports = function(agenda) {
 agenda.define('test', function(job, done) {

});

 agenda.on('ready', startJob());

}


function startJob(agenda) {
 agenda.every('*/5 * * * * *', 'test');
 agenda.start();
}

但无法获取

Cannot read property 'start' of undefined

问题是您在没有传递议程对象的情况下直接调用该函数。解决这个问题的一种方法是:

agenda.on('ready', () => { startJob(agenda); });

或者,如果您想将 startJob 函数作为回调传递,则需要将议程对象绑定到它:

agenda.on('ready', startJob.bind(this, agenda));