node定時任務(node-schedule)


最近做項目碰到需要定時去請求某個接口,定時清空數據等一些需要定時執行某些任務的需求,js的setInterval也可以實現這個功能,可是兩者之間也存在一些區別;

node-schedule 可以精確地設置年月日時間來執行這個任務;

setInterval是設置每隔多少時間之后執行特定任務;

安裝

可以使用npm進行安裝

npm install node-schedule

工作和計划

節點計划中的每個計划作業均由一個Job對象表示您可以手動創建作業,然后執行該schedule()方法以應用時間表,或使用便捷功能scheduleJob(),如下所示。

Job對象是EventEmitter,並發出以下事件:

  • 一個run每次執行之后的事件。
  • schedule每次預定運行時都會有一個事件。
  • cancel,當它在執行之前調用被取消的事件。
  • 一個error當被觸發調度作業調用拋出或退貨事件拒絕Promise

scheduledcanceled事件均接收JavaScript日期對象作為參數)。
請注意,作業是第一時間安排的,因此,如果使用scheduleJob()便捷方法創建作業,則會錯過第一個scheduled 事件,但是您可以手動查詢調用(請參見下文)。

Cron式日程安排

cron格式包括:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ 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)

cron格式的示例1:

//當分鍾為42時,執行cron作業。

const schedule = require ('node-schedule' );
const job =schedule.scheduleJob ('42 * * * *” , function(){ console.log('答案生命,宇宙以及一切'! ); } );
示例2:
// 當前時間的秒值為 10 時執行任務,如:2018-7-8 13:25:10
let job = schedule.scheduleJob('10 * * * * *', () => {
 console.log(new Date());
});

 示例3

// 每隔一段時間執行任務
const schedule = require('node-schedule');
 
// 定義規則
let rule = new schedule.RecurrenceRule();
rule.second = [0, 10, 20, 30, 40, 50]; // 每隔 10 秒執行一次
 
// 啟動任務
let job = schedule.scheduleJob(rule, () => {
 console.log(new Date());
});

 


免責聲明!

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



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