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中使用monk访问mongodb
Jul 06 NodeJs
nodejs教程之入门
Nov 21 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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返回当前日期或者指定日期是周几
2015/05/21 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
js 学习笔记(三)
2009/12/29 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
详谈javascript异步编程
2016/02/21 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
js轮播图代码分享
2016/07/14 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
Python contextlib模块使用示例
2015/02/18 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
python爬取微信公众号文章的方法
2019/02/26 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
师范生见习报告范文
2014/11/03 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
《假如》教学反思
2016/02/17 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书