這篇文章主要介紹了node項目中如何使用Node Schedule創建定時任務,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
nodejs的后端也是需要定時任務做處理,例如備份,定時發送郵件,結算等操作,所以使用了Node Schedule這個npm幫助我們制定定時任務腳本。
npm install node-schedule
Node Schedule 中的每個定時任務都由一個Job對象表示??梢允謩觿摻?,然后執行schedule()方法以應用任務,或使用scheduleJob()如下。
Job對象是`EventEmitter,并發出以下事件:
run每次執行后的事件。
scheduled每次計劃運行時的事件。
一canceled,當它在執行之前調用被取消的事件。
一個error當被觸發調度作業調用拋出或退出事件拒絕Promise。
(scheduled和canceled事件都接收一個 JavaScript 日期對象作為參數)。
注意的是,任務是第一次立即執行的,因此如果使用scheduleJob()方法創建任務,將錯過第一個scheduled 事件觸發,但您可以手動查詢調用。
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └ 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) 每分鐘的第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'
const schedule = require('node-schedule');
exports.Interval = class Interval {
constructor({ unit_name, maintain_time, last_alarm }) {
this.unit_name = unit_name // 任務名字
this.maintain_time = maintain_time // 定時時間
this.last_alarm = last_alarm || "" // 上一次定時任務名字
}
// 生成新的定時任務
async create(callback) {
// 終止之前的定時任務
if (this.last_alarm !== "") {
this.delete(this.last_alarm)
}
schedule.scheduleJob(`${this.unit_name}`, `${this.maintain_time}`, callback);
}
// 刪除定時任務
delete() {
if (schedule.scheduledJobs[this.unit_name]) {
schedule.scheduledJobs[this.unit_name].cancel();
return true
}
return false
}
// 找到一個定時任務
findOne(name) {
if (schedule.scheduledJobs[name]) {
return schedule.scheduledJobs[name]
} else {
throw new Error("未找到任務名")
}
}
// 查看所有的定時任務
findAll() {
return schedule.scheduledJobs
}
}// 定時任務
new Util.Interval({
unit_name: '自動分發任務 0 0 12 * * *',
maintain_time: '0 0 12 * * *',
last_alarm: '自動分發任務 0 0 12 * * *'
}).create(async () => {
// 寫入你自己想在定時任務觸發的時候,想要執行的函數
})感謝你能夠認真閱讀完這篇文章,希望小編分享的“node項目中如何使用Node Schedule創建定時任務”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。