我有以下代码在5秒内安排3个工作:
var moment = require('moment');
var CronJob = require('cron').CronJob;
for (i=0; i < 2; i++)
var job = new CronJob(moment().add(1, 'minutes').toDate(), function(){
console.log(i);
}, true, 'America/Los_Angeles');
但不是打印0,1,2而是打印3次。那么最后一次工作3次? $ node test-cron.js 3 3 3
答案 0 :(得分:2)
观看&#39; i&#39;的范围。在你的for循环中。在您的原始代码中,当作业运行全局&#39; i&#39;已经改变。 (虽然我不确定为什么要打印&#39; 3当for循环是&#39;&lt; 2&#39;)。下面的示例代码创建了三个cron作业,并且每5秒运行一次。
var CronJob = require('cron').CronJob;
function scheduleJob(counter) {
var job = new CronJob('*/5 * * * * *', function(){
console.log(counter);
}, true, 'America/Los_Angeles');
return job;
}
for (i=0; i < 3; i++) {
scheduleJob(i);
}