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实现黑名单中间件设计
Jun 17 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs中的异步编程知识点详解
Jan 17 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 分页原理详解
2009/08/21 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
javascript 定义新对象方法
2010/02/20 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
Python入门篇之对象类型
2014/10/17 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
python 如何上传包到pypi
2020/12/24 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
千元咖啡店的创业计划书范文
2013/12/29 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
实习单位推荐信
2015/03/27 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS