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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
nodejs的路径问题的解决
Jun 30 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
taro开发微信小程序的实践
2019/05/21 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
Python Trie树实现字典排序
2014/03/28 Python
Python实现端口复用实例代码
2014/07/03 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
Python注释详解
2016/06/01 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Python3监控疫情的完整代码
2020/02/20 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
母亲80寿诞答谢词
2014/01/16 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
部队党性分析材料
2014/02/16 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
代理人委托书
2014/08/01 职场文书
护士工作心得体会
2016/01/25 职场文书
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python