2015-11-30 39 views
3

我需要在我的nodejs應用程序中定期執行一些任務。如果它是固定的時期,那麼它工作正常。但在我的情況下,這個時期應該動態變化。下面是我的代碼沒有按預期工作。這裏cronjob沒有更新它的時期,當我改變時期。動態更新nodejs cronjob時期

var period = 1; 
var CronJob = require('cron').CronJob; 
new CronJob('*/' + period + ' * * * * *', function() { 
    console.log("some task"); 
}, null, true, "Indian/Mauritius"); 


new CronJob('*/5 * * * * *', function() { 
    period = period * 2; 
    console.log("updating cronjob period"); 
}, null, true, "Indian/Mauritius"); 

回答

0

在這裏,您將創建2個CronJobs,它們都將運行。爲了「改變」期限,你必須先停止第一個Cronjob,然後創建一個新的Cronjob。

例如(未測試的代碼)

var job; 
var period = 1; 
var CronJob = require('cron').CronJob; 
function createCron(job, newPeriod) { 
    if (job) { 
    job.stop(); 
    } 
    job = new CronJob('*/' + newPeriod + ' * * * * *', function() { 
      console.log("some task"); 
     }, null, true, "Indian/Mauritius"); 
} 
createCron(job, 1); 
setTimeout(function() { 
    period = period * 2; 
    createCron(job, period); 
}, 60000);