为node.js

时间:2016-01-06 05:05:44

标签: node.js

我需要有关为node.js使用cron-parser的帮助 我不太明白作业将如何运行然后记录cron作业的结果。

基于此处给出的示例https://github.com/harrisiirak/cron-parser 它迭代表达式的时间/间隔,而不是正常的cron作业,它只会在实际的cron作业完成时显示作业的结果。

问题是,我如何创建一个只运行的普通cron作业,让我们说每分钟,我怎么能创建多个作业,分别同时和异步地运行3分钟和5分钟。

这就是我应该每隔5分钟运行一次,不幸的是每5分钟不打印任何结果。

try {
        var interval = parser.parseExpression('*/5 * * * *');

        while (true) {
            try {
                var obj = interval.next();

                if (obj.done)
                    console.log("Cron Job: run every 5 minutes.");
            } 
            catch (e) {
                break;
            }
        }
    } 
    catch (err) {
        console.log('cron parser error: ' + err.message);
    }

修改 所以从技术上讲,我不能通过cron-parser来创建作业,而是使用cron模块来处理我的cron作业。我让cron工作也在创造多个工作岗位。问题现在是每当我使用数组创建多个cron作业时,第一个作业成功运行,但是在第二个作业上,在它运行它的时间之后,它失败并且给了我

uncaughtException: timer._repeat is not a function

这就是我所做的:

for (var data in lists){
        sampleData.find({ id: lists[data].id }, function(err, samples){
            if (err){
                console.log("Server error");
            }
            else{
                for (var sample in samples){
                    new cron("*/3 * * * *", function() {
                        console.log(sample);
                    }, null, true, null);
                }
            }
        });
    }

1 个答案:

答案 0 :(得分:2)

如果你可以使用'cron'模块,你可以这样做

var CronJob = require('cron').CronJob;
new CronJob('*/3 * * * * *', function() {
  console.log('You will see this message every 3 second');
}, null, true, 'America/Los_Angeles');

new CronJob('*/6 * * * * *', function() {
  console.log('You will see this message every 6 second');
}, null, true, 'America/Los_Angeles');

new CronJob('*/7 * * * * *', function() {
  console.log('You will see this message every 7 second');
}, null, true, 'America/Los_Angeles');