Преобразовать анонимную функцию события готовности к повестке дня NodeJS в обычную функцию - PullRequest
0 голосов
/ 18 апреля 2019

Я использую NodeJS Agenda для планирования заданий. В повестке дня событие «готово»

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

});

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

}

Здесь, внутри события ready, я использую анонимную функцию, но я не хочу использовать анонимную функцию, хочу создать нормальную функцию.

например

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 Ответ

1 голос
/ 18 апреля 2019

Проблема в том, что вы напрямую вызываете функцию, не передавая объект повестки дня.Один из способов решить эту проблему:

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

Или, если вы хотите передать функцию startJob в качестве обратного вызова, вам нужно привязать к ней объект повестки дня:

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

...