노드 일정을 사용하여 노드 프로젝트에서 예약된 작업을 만드는 방법

青灯夜游
풀어 주다: 2021-11-17 19:29:17
앞으로
3333명이 탐색했습니다.

node프로젝트에서 예약된 작업을 어떻게 생성하나요? 다음 기사에서는 노드 일정을 사용하여 노드 프로젝트에서 예약된 작업 스크립트를 개발하는 방법을 소개합니다. 도움이 되길 바랍니다!

노드 일정을 사용하여 노드 프로젝트에서 예약된 작업을 만드는 방법

nodejs의 백엔드에서도 백업, 예약된 이메일 전송, 결제 및 기타 작업과 같은 예약된 작업을 처리해야 하므로 npm 노드 일정을 사용하여 예약된 작업 스크립트를 개발합니다.

npm install node-schedule
로그인 후 복사

노드 일정의 각 예약된 작업은Job개체로 표시됩니다. 수동으로 생성한 후schedule()메서드를 실행하여 작업을 적용하거나, 다음과 같이scheduleJob()을 사용할 수 있습니다.Job对象表示。可以手动创建,然后执行schedule()方法以应用任务,或使用scheduleJob()如下。

Job对象是`EventEmitter,并发出以下事件:

  • run每次执行后的事件。
  • scheduled每次计划运行时的事件。
  • canceled,当它在执行之前调用被取消的事件。
  • 一个error当被触发调度作业调用抛出或退出事件拒绝Promise

scheduledcanceledscheduleJob()方法创建任务,将错过第一个scheduledJob객체는 `EventEmitter이며 다음 이벤트를 내보냅니다. 각 실행 후

  • run이벤트.
  • 예약된일정이 실행될 때마다 이벤트가 발생합니다.
  • 실행 전에 호출되면 취소되는취소이벤트입니다.
  • 예약된 작업 호출이 트리거되거나 종료 이벤트가Promise를 거부하면오류가 발생합니다.

(예정된이벤트와취소된이벤트 모두 매개변수로 JavaScript 날짜 개체를 받습니다). 작업은 처음 실행되는 즉시 실행되므로이벤트가 발생하면 수동으로 호출을 쿼리할 수 있습니다.

Cron 형식
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └ 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'
로그인 후 복사

개인적으로 node-schedule encapsulation 클래스를 사용하여 예약된 작업을 추가, 삭제, 수정 및 확인하는 방법은 다음과 같습니다.
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 () => { // 写入你自己想在定时任务触发的时候,想要执行的函数 })
로그인 후 복사
노드 관련 지식을 더 보려면 nodejs 튜토리얼을 방문하세요! !

위 내용은 노드 일정을 사용하여 노드 프로젝트에서 예약된 작업을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!