2016-06-07 46 views

回答

0

有一个在node.js中的cron作业一个伟大的图书馆:cron

的cron作业的“自然”是他们定期执行。如果您只想在以前的工作完成时启动工作,则可以使用一个标志(在工作开始时将其设置为true,在工作结束时将其设置为false),然后新工作可以检查国旗是真实的)。

但是,也许你应该使用工作队列 - 一旦工作完成,下一个工作将开始执行。这取决于你的情况,所以请提供更多信息。

一个流行的图书馆有队列:collections

+0

我试图使用它。我发现如果前面的任务没有完成,下一个任务将不会启动。这里是我的代码https://github.com/xiaoshao/nodejs_cron_example/tree/master –

0

您可以结合cronasync's queues,例如:

var CronJob = require('cron').CronJob; 
var async = require('async'); 
var NUMBER_CONCURRENT_JOBS = 1; 

var q = async.queue(function(task, callback) { 
    task(callback); 
}, NUMBER_CONCURRENT_JOBS); 

var job = function(callback) { 
    setTimeout(function() { 
     console.log('JOB EXECUTED'); 
     callback(); 
    }, 5000); 
} 

new CronJob('* * * * * *', function() { 
    console.log('JOB REQUIRED'); 
    q.push(job); 
}, null, true, 'America/Los_Angeles');