node定时任务node-schedule

最近做项目碰到需要定时去请求某个接口,定时清空数据等一些需要定时执行某些任务的需求,js的setInterval也可以实现这个功能,可是两者之间也存在一些区别;

node-schedule 可以精确地设置年月日时间来执行这个任务;

setInterval是设置每隔多少时间之后执行特定任务;

安装

可以使用npm进行安装。

npm install node-schedule

工作和计划

节点计划中的每个计划作业均由一个Job对象表示。您可以手动创建作业,然后执行schedule()方法以应用时间表,或使用便捷功能scheduleJob(),如下所示。

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

  • 一个run每次执行之后的事件。
  • schedule每次预定运行时都会有一个事件。
  • cancel,当它在执行之前调用被取消的事件。
  • 一个error当被触发调度作业调用抛出或退货事件拒绝Promise

scheduledcanceled事件均接收JavaScript日期对象作为参数)。
请注意,作业是第一时间安排的,因此,如果使用scheduleJob()便捷方法创建作业,则会错过第一个scheduled 事件,但是您可以手动查询调用(请参见下文)。

Cron式日程安排

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)

cron格式的示例1:

//当分钟为42时,执行cron作业。

const schedule = require ('node-schedule' );
const job =schedule.scheduleJob ('42 * * * *” , function(){ console.log('答案生命,宇宙以及一切'! ); } );
示例2:
// 当前时间的秒值为 10 时执行任务,如:2018-7-8 13:25:10
let job = schedule.scheduleJob('10 * * * * *', () => {
 console.log(new Date());
});

 示例3

// 每隔一段时间执行任务
const schedule = require('node-schedule');
 
// 定义规则
let rule = new schedule.RecurrenceRule();
rule.second = [0, 10, 20, 30, 40, 50]; // 每隔 10 秒执行一次
 
// 启动任务
let job = schedule.scheduleJob(rule, () => {
 console.log(new Date());
});

 

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...