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