我正在使用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
答案 0 :(得分:1)
问题在于您直接调用该函数而不传递议程对象。解决此问题的一种方法是:
agenda.on('ready', () => { startJob(agenda); });
或者,如果您希望将startJob函数作为回调传递,则需要将议程对象绑定到该对象:
agenda.on('ready', startJob.bind(this, agenda));