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 相关文章推荐
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
JQuery入门——事件切换之hover()方法应用介绍
Feb 05 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
jQuery实现图片滑动效果
Mar 08 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
Vue表单类的父子组件数据传递示例
May 03 Javascript
在vue项目中,将juery设置为全局变量的方法
Sep 25 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
Nov 04 Javascript
vue 使用v-for进行循环的实例代码详解
Feb 19 Javascript
angular组件间传值测试的方法详解
May 07 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
DIY实用性框形天线
2021/03/02 无线电
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
js Calender控件使用详解
2015/01/05 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python连接mysql数据库的正确姿势
2016/02/03 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
法人授权委托书格式
2014/04/08 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
协议书范文
2015/01/27 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
导游词之西安骊山
2019/12/03 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
MYSQL常用函数介绍
2022/05/05 MySQL
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android