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 整合kindEditor实现图片上传
Feb 03 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php5.2.0内存管理改进
2007/01/22 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
JavaScript中的闭包
2016/02/24 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
python编程实现归并排序
2017/04/14 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Python多继承原理与用法示例
2018/08/23 Python
python lxml中etree的简单应用
2019/05/10 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
详解python深浅拷贝区别
2019/06/24 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
实习生自我鉴定
2013/12/12 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
新郎答谢词
2015/01/04 职场文书
十月围城观后感
2015/06/08 职场文书