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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
js输出列表实现代码
Sep 12 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
JS保存和删除cookie操作 判断cookie是否存在
Nov 13 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
通过onmouseover选项卡实现img图片的变化
Feb 12 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
详解vue+webpack+express中间件接口使用
Jul 17 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 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部分常见问题总结
2006/10/09 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
豆瓣网的jquery代码实例
2008/06/15 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
深入理解js中this的用法
2016/05/28 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
Python操作MongoDB详解及实例
2017/05/18 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
为什么python比较流行
2020/06/19 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
如何进行Linux分区优化
2013/02/12 面试题
销售文员岗位职责
2013/11/29 职场文书
校园招聘策划书
2014/01/09 职场文书
品牌转让协议书
2014/08/20 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python