Node.js设置定时任务之node-schedule模块的使用详解


Posted in Javascript onApril 28, 2020

node-schedule是 Node.js 的一个定时任务(crontab)模块。我们可以使用定时任务来对服务器系统进行维护,让其在固定的时间段执行某些必要的操作,还可以使用定时任务发送邮件、爬取数据等;

一、安装

npm install node-schedule
# 或
yarn add node-schedule

二、基础用法

使用schedule.scheduleJob()即可创建一个定时任务,一个简单的上手示例:

const schedule = require('node-schedule');

// 当前时间的秒值为 10 时执行任务,如:2018-7-8 13:25:10
let job = schedule.scheduleJob('10 * * * * *', () => {
 console.log(new Date());
});

如何运行示例?(首先确保安装了 Node.js)

1、新建一个 *.js 文件,如:test.js,粘贴示例代码;

2、终端(或命令行)cd到当前文件的所在目录;

3、终端执行node test.js即可执行代码;

4、console会在终端界面直接输出内容;

5、Ctrl + C可退出执行;

时间数值按下表表示

*  *  *  *  *  *
┬  ┬  ┬  ┬  ┬  ┬
│  │  │  │  │  |
│  │  │  │  │  └ 星期几,取值:0 - 7,其中 0 和 7 都表示是周日
│  │  │  │  └─── 月份,取值:1 - 12
│  │  │  └────── 日期,取值:1 - 31
│  │  └───────── 时,取值:0 - 23
│  └──────────── 分,取值:0 - 59
└─────────────── 秒,取值:0 - 59(可选)

也可以指定一个具体的时间,如:

const schedule = require('node-schedule');

// 定义一个未来的时间
let date = new Date(2016, 6, 13, 15, 50, 0);

// 定义一个任务
let job = schedule.scheduleJob(date, () => {
 console.log(new Date());
});

三、进阶用法

除了基础的用法,我们还可以使用一些更为灵活的方法来实现定时任务。

3.1、隔一段时间执行一次

const schedule = require('node-schedule');

// 定义规则
let rule = new schedule.RecurrenceRule();
rule.second = [0, 10, 20, 30, 40, 50]; // 每隔 10 秒执行一次

// 启动任务
let job = schedule.scheduleJob(rule, () => {
 console.log(new Date());
});

rule支持设置的值有secondminutehourdatedayOfWeekmonthyear等。一些厂家的用法,如:

每秒执行

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;

每周一、周三、周五的 0 点和 12 点执行

rule.dayOfWeek = [1,3,5];
rule.hour = [0,12];
rule.minute = 0;
rule.second = 0;

四、取消任务

可以使用cancel()终止一个运行中的任务。

job.cancel();

到此这篇关于Node.js设置定时任务:node-schedule模块的使用的文章就介绍到这了,更多相关Node.js设置定时任务:node-schedule模块的使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript Konami Code 实现代码
Jul 29 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
写得不错的jquery table鼠标经过变色代码
Sep 27 Javascript
JavaScript中使用Object.create()创建对象介绍
Dec 30 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
每天一篇javascript学习小结(Boolean对象)
Nov 12 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
JavaScript实现连连看连线算法
Jan 05 Javascript
jQuery实现高级检索功能
May 28 jQuery
Vue快速实现通用表单验证的方法
Feb 24 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
JavaScript Date对象功能与用法学习记录
Apr 28 #Javascript
JavaScript 链表定义与使用方法示例
Apr 28 #Javascript
Vue 3.0 全家桶抢先体验
Apr 28 #Javascript
React生命周期原理与用法踩坑笔记
Apr 28 #Javascript
js最全的数组的降维5种办法(小结)
Apr 28 #Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 #Javascript
React中Ref 的使用方法详解
Apr 28 #Javascript
You might like
php上传、管理照片示例
2006/10/09 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
解析php取整的几种方式
2013/06/25 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
关于Javascript作用域链的八点总结
2013/12/06 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python中的下划线详解
2015/06/24 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
领导党性分析材料
2014/02/15 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
村抢险救灾方案
2014/05/09 职场文书
检讨书大全
2015/01/27 职场文书