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 相关文章推荐
动态为事件添加js代码示例
Feb 15 Javascript
div+css布局的图片连续滚动js实现代码
May 04 Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 Javascript
Bootstrap CSS布局之按钮
Dec 17 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 Javascript
详解Axios 如何取消已发送的请求
Oct 20 Javascript
Jquery动态列功能完整实例
Aug 30 jQuery
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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
原生js二级联动效果
2017/06/20 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
Vue 一键清空表单的实现方法
2020/02/07 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
python通过cython加密代码
2020/12/11 Python
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
交通事故协议书范本
2014/11/18 职场文书
后勤个人工作总结
2015/02/28 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python