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编程起步(第五课)
Jan 10 Javascript
javascript String 对象
Apr 25 Javascript
javascript 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
jquery的extend和fn.extend的使用说明
Jan 09 Javascript
基于jquery的用鼠标画出可移动的div
Sep 06 Javascript
Javascript delete 引用类型对象
Nov 01 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
微信小程序 下拉菜单的实现
Apr 06 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
JS实现li标签的删除
Apr 12 Javascript
微信小程序实现消息框弹出动画
Apr 18 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与SQL注入攻击[一]
2007/04/17 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
php获取文件大小的方法
2014/02/26 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
php中错误处理操作实例分析
2019/08/23 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
python 接口返回的json字符串实例
2018/03/27 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
Python调用JavaScript代码的方法
2020/10/27 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
婚礼新郎父母答谢词
2014/01/16 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
给国外客户的邀请函
2014/01/30 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
写求职信有什么意义
2014/02/17 职场文书
《掌声》教学反思
2014/02/23 职场文书
委托书样本
2014/04/02 职场文书
紧急迫降观后感
2015/06/15 职场文书
八年级历史教学反思
2016/02/19 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技