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为什么选择javascript为载体语言
Jan 13 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodejs log4js 使用详解
May 31 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实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
php生成微信红包数组的方法
2019/09/05 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
深入理解ES6中let和闭包
2018/02/22 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python字符串的拼接方法总结
2019/11/18 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
工作岗位说明书模板
2014/05/09 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
解除租赁合同协议书
2016/03/21 职场文书
Python torch.flatten()函数案例详解
2021/08/30 Python