您好我正在尝试测试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”
答案 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() 方法将终止批处理,并且不会在下一个预定时间再次执行。 我相信它是为了调试目的而制作的,例如在捕获错误时停止作业或类似的事情。