onComplete()不会在节点cron中调用

时间:2014-12-16 07:32:47

标签: javascript node.js cron

您好我正在尝试测试node-cron,但我无法在一个案例中获得所需的回复。

当当前的cron完成时,我需要再次启动cron请求。所以,我需要调用onComplete(),但我无法收到回调。

我的代码段是:

CronWrapper.prototype.pushNotificationCron = function() {
    // change console to winston in real implementation.
    console.log('Creating job');
    var jobPattern = '*/10 * * * * *';
    var job = new CronJob(jobPattern, onJobStarted, onJobCompleted, false);
    console.log('Starting job');
    job.start();
};

var onJobStarted = function(){
    var date = new Date();
    console.log('Cron started on \t' + date);
    return;
};

var onJobCompleted = function(){
    winston.info('Job completed:');
};

输出:

Cron started on     Tue Dec 16 2014 12:59:40 GMT+0530 (IST)
Cron started on     Tue Dec 16 2014 12:59:50 GMT+0530 (IST)
Cron started on     Tue Dec 16 2014 13:00:00 GMT+0530 (IST)

请指出我的错误。

自行车详情:

“的cron”: “1.0.5”

2 个答案:

答案 0 :(得分:3)

在仔细阅读文档后,我发现我缺少调用stop()。

如文件

所述
  

onComplete - [可选] - 作业时将触发的函数   完成,停止时

所以现在我在完成时手动调用stop()并获得回调。所以现在我的代码看起来像:

CronWrapper.prototype.pushNotificationCron = function() {
    // change console to winston in real implementation.
    console.log('Creating job');
    var jobPattern = '*/10 * * * * *';
    var job = new CronJob(jobPattern, function(){
        var date = new Date();
        console.log('Cron started on \t' + date);
        job.stop();
    }, onJobCompleted, false);
    console.log('Starting job');
    job.start();
};

// var onJobStarted = function(){
//  var date = new Date();
//  console.log('Cron started on \t' + date);

// };

var onJobCompleted = function(){
    winston.info('Job completed:');
};

<强>输出

Cron started on     Tue Dec 16 2014 13:13:30 GMT+0530 (IST)
info: Job completed:

答案 1 :(得分:0)

我认为调用该 stop() 方法不是一个好主意,那么为什么将其称为批处理作业? stop() 方法将终止批处理,并且不会在下一个预定时间再次执行。 我相信它是为了调试目的而制作的,例如在捕获错误时停止作业或类似的事情。