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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
Mar 25 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
JavaScript实现带标题的图片轮播特效
May 20 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
AngularJs directive详解及示例代码
Sep 01 Javascript
原生js编写2048小游戏
Mar 17 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 Javascript
Echarts如何重新渲染实例详解
May 30 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程序员的13个好习惯小结
2012/02/20 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
java直接调用python脚本的例子
2014/02/16 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python中optparse模块使用浅析
2015/01/01 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Django跨域请求原理及实现代码
2020/11/14 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
成龙洗发水广告词
2014/03/14 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
租房安全协议书
2014/08/20 职场文书
员工福利申请报告
2015/05/15 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
Java tomcat手动配置servlet详解
2021/11/27 Java/Android