nodeJs实现定时任务 node-schedule

时间:2022-12-15 07:45:08

最近在思考怎么做定时任务,用setInterval实现的话,个人感觉,不利于日后代码维护和功能拓展。

然后在网上搜了一圈,搜到了node-schedule,初期看不懂,但自从看了下面这个网址后,变豁然开朗了。

 

参考网站:https://www.jb51.net/article/129748.htm

github网址:https://github.com/node-schedule/node-schedule

 

在我看来,node-schedule只有三个方法,这三个方法够我们用了

1、指定时间执行方法(简单粗暴)

nodeJs实现定时任务 node-schedulenodeJs实现定时任务 node-schedule
/*
* 指定时间执行方法
*
* 在2018年9月26日16点0分0秒,打印
*
* 月份是要减一的,程序里的1月份是0
* */
var date = new Date(2018, 8, 26, 19, 2, 0);
var j = schedule.scheduleJob(date, function(){
    console.log(`我在${new Date()}的时候,执行了定时任务`);
});
/*
* 取消任务
* */
// j.cancel();
View Code

2、指定时间间隔执行方法(基本都是这种玩法)

nodeJs实现定时任务 node-schedulenodeJs实现定时任务 node-schedule
/*
* 指定时间间隔执行方法
*
* 这是每当秒数为10时打印时间。
*
* 如果想每隔10秒执行,设置 rule.second =[0,10,20,30,40,50]即可。
*
* 同理:
*    每秒执行就是rule.second =[0,1,2,3......59]
*    每分钟0秒执行就是rule.second =0
*    每小时30分执行就是rule.minute =30;rule.second =0;
*    每天0点执行就是rule.hour =0;rule.minute =0;rule.second =0;
*    ....
*    每月1号的10点就是rule.date =1;rule.hour =10;rule.minute =0;rule.second =0;
*    每周1,3,5的0点和12点就是rule.dayOfWeek =[1,3,5];rule.hour =[0,12];rule.minute =0;rule.second =0;
* */

/*
* 这是每当秒数为10时打印时间。
*
* 每分钟的10秒钟执行
* */
var rule = new schedule.RecurrenceRule();
rule.second = 10;
var j2 = schedule.scheduleJob(rule, function(){
    console.log('每分钟执行---现在时间:',new Date());
});
/*
* 取消任务
* */
// j2.cancel();



/*
* 这是每秒打印
*
* 每秒钟执行
* */
var rule = new schedule.RecurrenceRule();
rule.second = [];
let i = 0, length = 60;
for(i; i<length; i++){
    rule.second.push(i);
}
var j3 = schedule.scheduleJob(rule, function(){
    console.log('每秒钟执行---现在时间:',new Date());
});
/*
* 取消任务
* */
// j3.cancel();

/*
* 这是每秒打印
*
* 每天0点执行
* */
var rule = new schedule.RecurrenceRule();
rule.hour = 0;
rule.minute = 0;
var j4 = schedule.scheduleJob(rule, function(){
    console.log('每晚0点---现在时间:',new Date());
});
/*
* 取消任务
* */
// j4.cancel();
View Code

3、取消定时任务