Heim >Web-Frontend >js-Tutorial >So verwenden Sie Node Schedule, um geplante Aufgaben in Node-Projekten zu erstellen
Wie erstelle ich eine geplante Aufgabe im Node-Projekt? Der folgende Artikel stellt Ihnen vor, wie Sie Node Schedule zum Entwickeln geplanter Aufgabenskripts in Node-Projekten verwenden. Ich hoffe, er wird Ihnen hilfreich sein! Das Backend von
nodejs benötigt auch die Verarbeitung geplanter Aufgaben, z. B. Sicherung, geplanter E-Mail-Versand, Abrechnung und andere Vorgänge. Daher verwenden wir den npm Node Schedule, um uns bei der Entwicklung geplanter Aufgabenskripts zu helfen.
npm install node-schedule
Jede geplante Aufgabe in Node Schedule wird durch ein Job
-Objekt dargestellt. Sie können es manuell erstellen und dann die Methode schedule()
ausführen, um die Aufgabe anzuwenden, oder scheduleJob()
wie folgt verwenden. Job
对象表示。可以手动创建,然后执行schedule()
方法以应用任务,或使用scheduleJob()
如下。
Job
对象是`EventEmitter,并发出以下事件:
run
每次执行后的事件。scheduled
每次计划运行时的事件。canceled
,当它在执行之前调用被取消的事件。error
当被触发调度作业调用抛出或退出事件拒绝Promise
。(scheduled
和canceled
事件都接收一个 JavaScript 日期对象作为参数)。
注意的是,任务是第一次立即执行的,因此如果使用scheduleJob()
方法创建任务,将错过第一个scheduled
Job
-Objekt ist ein „EventEmitter“ und gibt die folgenden Ereignisse aus: run
-Ereignis nach jeder Ausführung. geplant
Ereignisse bei jeder Ausführung des Zeitplans. abgebrochenes
-Ereignis, das abgebrochen wird, wenn es vor der Ausführung aufgerufen wird. Fehler
wird ausgelöst, wenn ein geplanter Jobaufruf ausgelöst wird oder das Exit-Ereignis ein Promise
ablehnt. geplant
als auch abgesagt
erhalten ein JavaScript-Datumsobjekt als Parameter).
Beachten Sie, dass die Aufgabe zum ersten Mal sofort ausgeführt wird. Wenn Sie also die Methode scheduleJob()
verwenden, um eine Aufgabe zu erstellen, verpassen Sie die Auslösung des ersten geplanten
-Ereignisses Sie können den Anruf manuell abfragen.
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └ 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 } }
Hier ist ein Beispiel für ein geplantes Aufgabenintervall beim Aufrufen
// 定时任务 new Util.Interval({ unit_name: '自动分发任务 0 0 12 * * *', maintain_time: '0 0 12 * * *', last_alarm: '自动分发任务 0 0 12 * * *' }).create(async () => { // 写入你自己想在定时任务触发的时候,想要执行的函数 })Für mehr Node-bezogenes Wissen besuchen Sie bitte: 🎜nodejs-Tutorial🎜! ! 🎜
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Node Schedule, um geplante Aufgaben in Node-Projekten zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!