node-schedule是 Node.js 的一个定时任务(crontab)模块。我们可以使用定时任务来对服务器系统进行维护,让其在固定的时间段执行某些必要的操作,还可以使用定时任务发送邮件、爬取数据等;定时任务(crontab)一、安装一、安装一、安装
npm install node-schedule
# 或
yarn add node-schedule
npm install node-schedule
# 或
yarn add node-schedule二、基础用法二、基础用法二、基础用法使用schedule.scheduleJob()即可创建一个定时任务,一个简单的上手示例:schedule.scheduleJob()
const schedule = require('node-schedule');

// 当前时间的秒值为 10 时执行任务,如:2021-7-8 13:25:10
let job = schedule.scheduleJob('10 * * * * *', () => {
console.log(new Date());
});
const schedule = require('node-schedule');

// 当前时间的秒值为 10 时执行任务,如:2021-7-8 13:25:10
let job = schedule.scheduleJob('10 * * * * *', () => {
console.log(new Date());
});如何运行示例?(首先确保安装了 Node.js)1、新建一个 *.js 文件,如:test.js,粘贴示例代码;2、终端(或命令行)cd到当前文件的所在目录;cd3、终端执行node test.js即可执行代码;node test.js4、console会在终端界面直接输出内容;console5、Ctrl + C可退出执行;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(2021, 6, 13, 15, 50, 0);

// 定义一个任务
let job = schedule.scheduleJob(date, () => {
console.log(new Date());
});
const schedule = require('node-schedule');

// 定义一个未来的时间
let date = new Date(2021, 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());
});
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支持设置的值有second、minute、hour、date、dayOfWeek、month、year等。一些厂家的用法,如:rulesecondminutehourdatedayOfWeekmonthyear每秒执行
rule.second = [0,1,2,3......59];
rule.second = [0,1,2,3......59];每分钟 0 秒执行
rule.second = 0;
rule.second = 0;每小时 30 分执行
rule.minute = 30;
rule.second = 0;
rule.minute = 30;
rule.second = 0;每天 0 点执行
rule.hour =0;
rule.minute =0;
rule.second =0;
rule.hour =0;
rule.minute =0;
rule.second =0;每月 1 号的 10 点执行
rule.date = 1;
rule.hour = 10;
rule.minute = 0;
rule.second = 0;
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;
rule.dayOfWeek = [1,3,5];
rule.hour = [0,12];
rule.minute = 0;
rule.second = 0;四、取消任务四、取消任务四、取消任务可以使用cancel()终止一个运行中的任务。cancel()
job.cancel();
job.cancel();