NodeJs实现定时任务的示例代码


Posted in NodeJs onDecember 05, 2017

在项目中有个每天0点执行的函数,本来想用setInterval来实现,但觉得这种需求以后应该还会有,自己写可能拓展性不高。

搜了一下发现了node-schedule这个包。

现在记录一下使用方法

node-schedule没次都是通过新建一个scheduleJob对象来执行具体方法。

时间数值按下表表示

*  *  *  *  *  *
┬  ┬  ┬  ┬  ┬  ┬
│  │  │  │  │  |
│  │  │  │  │  └ [dayOfWeek]day of week (0 - 7) (0 or 7 is Sun)
│  │  │  │  └───── [month]month (1 - 12)
│  │  │  └────────── [date]day of month (1 - 31)
│  │  └─────────────── [hour]hour (0 - 23)
│  └──────────────────── [minute]minute (0 - 59)
└───────────────────────── [second]second (0 - 59, OPTIONAL)

使用node-schedule在指定时间执行方法

var schedule = require('node-schedule');
var date = new Date(2017, 11, 16, 16, 43, 0);

var j = schedule.scheduleJob(date, function(){
 console.log('现在时间:',new Date());
});

在2017年12月16日16点43分0秒,打印当时时间

指定时间间隔执行方法

var rule = new schedule.RecurrenceRule();
rule.second = 10;
var j = schedule.scheduleJob(rule, function(){
 console.log('现在时间:',new Date());
});

这是每当秒数为10时打印时间。如果想每隔10秒执行,设置 rule.second =[0,10,20,30,40,50]即可。

rule支持设置的值有second,minute,hour,date,dayOfWeek,month,year

同理:

每秒执行就是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;
....

示例

1:确定时间

例如:2014年2月14日,15:40执行

var schedule = require("node-schedule");

  var date = new Date(2014,2,14,15,40,0);

  var j = schedule.scheduleJob(date, function(){


console.log("执行任务");

  });

取消任务

j.cancel();

2:每小时的固定时间

例如:每小时的40分钟执行

var rule = new schedule.RecurrenceRule();


rule.minute = 40;


var j = schedule.scheduleJob(rule, function(){



console.log("执行任务");


});

3:一个星期中的某些天的某个时刻执行,

例如:周一到周日的20点执行

var rule = new schedule.RecurrenceRule();


rule.dayOfWeek = [0, new schedule.Range(1, 6)];


rule.hour = 20;


rule.minute = 0;


var j = schedule.scheduleJob(rule, function(){



console.log("执行任务");


});

4:每秒执行

var rule = new schedule.RecurrenceRule();


var times = [];


for(var i=1; i<60; i++){



times.push(i);


}


rule.second = times;


var c=0;

var j = schedule.scheduleJob(rule, function(){
   
 c++;
   
console.log(c);

});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 #NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 #NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 #NodeJs
NodeJS实现视频转码的示例代码
Nov 18 #NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 #NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 #NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 #NodeJs
You might like
js验证是否为数字的总结
2013/04/14 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
深入浅析Python传值与传址
2018/07/10 Python
Python实现Dijkstra算法
2018/10/17 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
Python对wav文件的重采样实例
2020/02/25 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
房屋公证委托书
2014/04/03 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
南京导游词
2015/02/03 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Python&Matlab实现樱花的绘制
2022/04/07 Python
Python绘制散乱的点构成的图的方法
2022/04/21 Python