安裝擴展:node-schedule
npm install node-schedule
1、linux Crontab風格
1 var schedule = require('node-schedule'); 2 3 function scheduleCron(){ 4 schedule.scheduleJob('1 * * * * *', function(){ 5 console.log('Hello World'); 6 }); 7 } 8 9 scheduleCron();
通配符解釋:
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ [dayOfWeek]day of week (0 - 7) (0 or 7 is Sun) 周幾 │ │ │ │ └───── [month]month (1 - 12) 月 │ │ │ └────────── [date]day of month (1 - 31) 日 │ │ └─────────────── [hour]hour (0 - 23) 時 │ └──────────────────── [minute]minute (0 - 59) 分 └───────────────────────── [second]second (0 - 59, OPTIONAL) 秒
范圍內執行:
1 function scheduleCron(){ 2 schedule.scheduleJob('1-10 * * * * *', function(){ 3 console.log('每分鍾的1-10秒執行'); 4 }); 5 }
2、對象風格:
1 var schedule = require('node-schedule'); 2 3 function scheduleRule(){ 4 var rule = new schedule.RecurrenceRule(); 5 6 rule.dayOfWeek = 5; // 周幾 7 rule.month = 4; // 月 8 rule.dayOfMonth = 3; // 日 9 rule.hour = 2; // 時 10 rule.minute = 1; // 分 11 rule.second = 0; // 秒 12 13 schedule.scheduleJob(rule, function(){ 14 console.log('hello world'); 15 }); 16 17 } 18 scheduleRule()
間隔執行:rule 規則傳入數組即可
var schedule = require('node-schedule'); function scheduleRule(){ var rule = new schedule.RecurrenceRule(); // 每隔2秒執行 // 分、時、等同理 rule.second = [1,3,5,7]; schedule.scheduleJob(rule, function(){ console.log('hello world'); }); }
3、按確定的時間執行:
2017年7月12號14:50:00執行==>
var schedule = require('node-schedule'); function scheduleDate(){ var date = new Date(2017,7,12,14,50,0); schedule.scheduleJob(rule, function(){ console.log('hello world'); }); } scheduleDate();
4、取消定時任務:
1 var schedule = require('node-schedule'); 2 3 function scheduleCancel(){ 4 5 var counter = 1; 6 var j = schedule.scheduleJob('* * * * * *', function(){ 7 8 console.log('定時器觸發次數:' + counter); 9 counter++; 10 11 }); 12 13 setTimeout(function() { 14 console.log('定時器取消') 15 j.cancel(); 16 }, 5000); 17 18 } 19 20 scheduleCancel();
