最近在思考怎么做定时任务,用setInterval实现的话,个人感觉,不利于日后代码维护和功能拓展。
然后在网上搜了一圈,搜到了node-schedule,初期看不懂,但自从看了下面这个网址后,变豁然开朗了。
参考网站:https://www.jb51.net/article/129748.htm
github网址:https://github.com/node-schedule/node-schedule
在我看来,node-schedule只有三个方法,这三个方法够我们用了
1、指定时间执行方法(简单粗暴)
/* * 指定时间执行方法 * * 在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();
2、指定时间间隔执行方法(基本都是这种玩法)
/* * 指定时间间隔执行方法 * * 这是每当秒数为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();
3、取消定时任务