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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 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
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
简单的自定义php模板引擎
2016/08/26 PHP
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
详解Python3中yield生成器的用法
2015/08/20 Python
用Python设计一个经典小游戏
2017/05/15 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python异常触发及自定义异常类解析
2019/08/06 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
员工培训心得体会
2013/12/30 职场文书
大学生村官心得体会范文
2014/01/04 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
2015年妇女工作总结
2015/05/14 职场文书
运动会100米广播稿
2015/08/19 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server