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

时间:2019-04-18 08:04:34

标签: node.js mongoose agenda

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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