Rumah > Artikel > hujung hadapan web > Cara menggunakan Jadual Nod untuk mencipta tugas berjadual dalam projek nod
Bagaimana untuk mencipta tugas berjadual dalam projek
nod? Artikel berikut akan memperkenalkan kepada anda cara menggunakan Jadual Nod untuk membangunkan skrip tugas berjadual dalam projek nod Saya harap ia akan membantu anda!
Halaman belakang nodej juga perlu memproses tugasan berjadual, seperti sandaran, penghantaran e-mel berjadual, penyelesaian dan operasi lain, jadi Jadual Nod npm digunakan Bantu kami membangunkan skrip tugas berjadual.
npm install node-schedule
Setiap tugas yang dijadualkan dalam Jadual Nod diwakili oleh objek Job
. Ini boleh dibuat secara manual dan kemudian laksanakan kaedah schedule()
untuk menggunakan tugasan, atau gunakan scheduleJob()
seperti berikut. Objek
Job
ialah `EventEmitter dan memancarkan peristiwa berikut:
run
selepas setiap pelaksanaan. scheduled
Acara setiap kali rancangan berjalan. canceled
acara yang dibatalkan apabila dipanggil sebelum ia dilaksanakan. error
dilemparkan apabila panggilan kerja berjadual dicetuskan atau acara keluar menolak Promise
. (Kedua-dua peristiwa scheduled
dan canceled
menerima objek tarikh JavaScript sebagai parameter).
Ambil perhatian bahawa tugasan dilaksanakan serta-merta buat kali pertama, jadi jika anda menggunakan kaedah scheduleJob()
untuk membuat tugasan, anda akan terlepas pencetusan acara scheduled
pertama, tetapi anda boleh menanyakan panggilan secara manual.
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └ 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 () => { // 写入你自己想在定时任务触发的时候,想要执行的函数 })
Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs ! !
Atas ialah kandungan terperinci Cara menggunakan Jadual Nod untuk mencipta tugas berjadual dalam projek nod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!