Node.js设置定时任务之node-schedule模块的使用详解

2020-06-17 07:51:20易采站长站整理

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());