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打包工具整合到鼠标右键的方法
May 11 NodeJs
Nodejs+express+html5 实现拖拽上传
Aug 08 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
nodejs中的异步编程知识点详解
Jan 17 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数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中使用HTMLParser解析html实例
2015/02/08 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
django如何自己创建一个中间件
2019/07/24 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
采购主管的岗位职责
2013/12/17 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
绿化工程实施方案
2014/03/17 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
Python如何让字典保持有序排列
2022/04/29 Python
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript