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教程之制作一个简单的文章发布系统
Nov 21 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
nodejs制作小爬虫功能示例
Feb 24 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
收藏的一个php小偷的核心程序
2007/04/09 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
smarty中js的调用方法示例
2014/10/27 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
求职信写作要突出重点
2014/01/01 职场文书
领导干部培训感言
2014/01/23 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫