schedule 定時任務

weixin_41779718發表於2020-11-10

在實際開發專案中,會遇到很多定時任務的工作。比如:定時匯出某些資料、定時傳送訊息或郵件給使用者、定時備份什麼型別的檔案等等

一般可以寫個定時器,來完成相應的需求,在node.js中自已實現也非常容易,接下來要介紹的是node-schedule來完成定時任務

安裝

npm install node-schedule --save 或者 yarn add node-schedule
const schedule = require('node-schedule');

const  scheduleCronstyle = ()=>{
  //每分鐘的第30秒定時執行一次:
    schedule.scheduleJob('30 * * * * *',()=>{
        console.log('scheduleCronstyle:' + new Date());
    }); 
}

scheduleCronstyle();

取消定時器

呼叫 定時器物件的cancl()方法即可

const schedule = require('node-schedule');

function scheduleCancel(){

    var counter = 1;
    const j = schedule.scheduleJob('* * * * * *', function(){
        
        console.log('定時器觸發次數:' + counter);
        counter++;
        
    });

    setTimeout(function() {
        console.log('定時器取消')
      // 定時器取消
        j.cancel();   
    }, 5000);
    
}
scheduleCancel();

規則引數講解 *代表萬用字元

*  *  *  *  *  *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │  |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

6個佔位符從左到右分別代表:秒、分、時、日、月、周幾

表示萬用字元,匹配任意,當秒是時,表示任意秒數都觸發,其它類推

下面可以看看以下傳入引數分別代表的意思

每分鐘的第30秒觸發: ‘30 * * * * *’

每小時的1分30秒觸發 :‘30 1 * * * *’

每天的凌晨1點1分30秒觸發 :‘30 1 1 * * *’

每月的1日1點1分30秒觸發 :‘30 1 1 1 * *’

2016年的1月1日1點1分30秒觸發 :‘30 1 1 1 2016 *’

每週1的1點1分30秒觸發 :‘30 1 1 * * 1’