nodejs cron 安排 3 个作业

nodejs cron to schedule 3 jobs

我有以下代码可以在 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 次? $节点测试-cron.js 3个 3个 3

注意 for 循环中 'i' 的作用域。在您的原始代码中,到 jobs 运行 时,全局 'i' 的值已更改。 (虽然我不确定为什么当 for 循环为 '< 2' 时它打印 '3')。下面的示例代码创建了三个 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);
}