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的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
python之PyMongo使用总结
2017/05/26 Python
Php多进程实现代码
2018/05/07 Python
Python安装selenium包详细过程
2019/07/23 Python
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
气象学专业个人求职信
2014/04/22 职场文书
实习评语大全
2014/04/26 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python