一,介紹與需求
1.1,介紹
定時任務(node-schedule),是針對Node.js的一種靈活的cron-like和not-cron-like作業調度程序。它允許您使用可選的遞歸規則將作業(任意函數)安排在特定日期執行。它在任何給定的時間只使用一個計時器(而不是每秒鐘/分鐘重新評估即將到來的作業)。
Async是一個實用模塊,它為異步JavaScript提供了直接、強大的功能。async流程控制器--queue(隊列),queue流程控制器是一個并行的流程控制器,但是它與parallel的區別在于queue可以控制一次執行幾個函數,而parallel只是讓所有函數并行執行.
1.2,需求
實際開發項目中,會遇到很多定時任務的工作。比如:定時導出某些數據、定時發送消息或郵件給用戶、定時備份什么類型的文件等等。在當時給用戶發送消息時,可能要發送的用戶就不只有一兩個,二是多個,這是可能就會用到隊列順序執行。
二,定時器
第一步:安裝node-schedule
npm install node-schedule --save
第二步:封裝定時器模塊
const schedule = require('node-schedule');//定時器const nodeTimer = {};let cancelTimer = ''/** *Cron風格定時器/對象文本語法定時器 * @param executionTime :定時器字符串'30 * * * * *'/定時器對象{hour: 16, minute: 11, dayOfWeek: 1} * @param callback :回調函數 */nodeTimer.scheduleTimer = (executionTime = '30 * * * * *', callback) => { // 每分鐘的第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' cancelTimer = schedule.scheduleJob(executionTime, () => { if (typeof callback === 'function') { callback() } });}module.exports = nodeTimer;第三步:調用
在回調函數中寫入要執行的任務代碼,一個定時器就完成了!
引入定時器模塊:
const nodeTimer = require('./node_timer.js');1,Cron風格定時器
規則參數講解 *代表通配符
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
新聞熱點
疑難解答
圖片精選