Heim > Web-Frontend > js-Tutorial > So verwenden Sie Node Schedule, um geplante Aufgaben in Node-Projekten zu erstellen

So verwenden Sie Node Schedule, um geplante Aufgaben in Node-Projekten zu erstellen

青灯夜游
Freigeben: 2021-11-17 19:29:17
nach vorne
3472 Leute haben es durchsucht

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

So verwenden Sie Node Schedule, um geplante Aufgaben in Node-Projekten zu erstellen

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
Nach dem Login kopieren

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

scheduledcanceled事件都接收一个 JavaScript 日期对象作为参数)。 注意的是,任务是第一次立即执行的,因此如果使用scheduleJob()方法创建任务,将错过第一个scheduled

Job-Objekt ist ein „EventEmitter“ und gibt die folgenden Ereignisse aus:

  • run-Ereignis nach jeder Ausführung.
  • geplantEreignisse bei jeder Ausführung des Zeitplans.
  • Ein abgebrochenes-Ereignis, das abgebrochen wird, wenn es vor der Ausführung aufgerufen wird.
  • Ein Fehler wird ausgelöst, wenn ein geplanter Jobaufruf ausgelöst wird oder das Exit-Ereignis ein Promise ablehnt.
(Sowohl die Ereignisse 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.

Cron-Format
*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ 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'
Nach dem Login kopieren

Hier ist eine persönliche Verwendung der Node-Schedule-Kapselungsklasse zum Hinzufügen, Löschen, Ändern und Überprüfen geplanter Aufgaben
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
  }
}
Nach dem Login kopieren

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 () => {
  // 写入你自己想在定时任务触发的时候,想要执行的函数
})
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage