Nodejs 定時任務


安裝擴展: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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM