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异步回调的优雅处理方法
Sep 25 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 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注释和去除空格函数分享
2014/03/13 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
filemanage功能中用到的common.js
2007/04/08 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
Python爬虫模拟登录带验证码网站
2016/01/22 Python
python 网络爬虫初级实现代码
2016/02/27 Python
简单学习Python time模块
2016/04/29 Python
Python温度转换实例分析
2018/01/17 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
授权委托书怎么写
2014/04/03 职场文书
关键在于落实心得体会
2014/09/03 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL