0

我正在使用 NodeJS Agenda 模块进行作业调度。在议程中有一个事件“准备好”

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
4

1 回答 1

1

问题是您直接调用函数而不传递议程对象。解决此问题的一种方法是:

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

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

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

于 2019-04-18T08:27:38.817 回答