审核中~
溜忙之道
首页
溜忙手册
offer之道
项目Git
写文章
登录
·
注册
登录
没有账号,去注册
注册
已有账号,去登录
博客
Node.js 定时任务:node-schedule
南易_站长
阅读量:5518
关注
Node.js 定时任务:node-schedule
# Node.js 定时任务:node-schedule [node-schedule](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fnode-schedule) 是 Node.js 的一个 **定时任务(crontab)**模块。我们可以使用定时任务来对服务器系统进行维护,让其在固定的时间段执行某些必要的操作,还可以使用定时任务发送邮件、爬取数据等; ## 一、安装 ```bash npm install node-schedule # 或 yarn add node-schedule ``` ## 二、基础用法 使用 `schedule.scheduleJob()` 即可创建一个定时任务,一个简单的上手示例: ```js 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` 可退出执行; 时间数值按下表表示 ```undefined * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ 星期几,取值:0 - 7,其中 0 和 7 都表示是周日 │ │ │ │ └─── 月份,取值:1 - 12 │ │ │ └────── 日期,取值:1 - 31 │ │ └───────── 时,取值:0 - 23 │ └──────────── 分,取值:0 - 59 └─────────────── 秒,取值:0 - 59(可选) ``` 也可以指定一个具体的时间,如: ```js 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、隔一段时间执行一次 ```js 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` 等。一些厂家的用法,如: ##### 每秒执行 ```js rule.second = [0,1,2,3......59]; ``` ##### 每分钟 0 秒执行 ```js rule.second = 0; ``` ##### 每小时 30 分执行 ```js rule.minute = 30; rule.second = 0; ``` ##### 每天 0 点执行 ```js rule.hour =0; rule.minute =0; rule.second =0; ``` ##### 每月 1 号的 10 点执行 ```js rule.date = 1; rule.hour = 10; rule.minute = 0; rule.second = 0; ``` ##### 每周一、周三、周五的 0 点和 12 点执行 ```js rule.dayOfWeek = [1,3,5]; rule.hour = [0,12]; rule.minute = 0; rule.second = 0; ``` ## 四、取消任务 可以使用 `cancel()` 终止一个运行中的任务。 ```js job.cancel(); ``` ## 五、常见问题 ... 待增补 ## 参考 * [NodeJs实现定时任务的示例代码](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.sunbin.vip%2F2017%2F10%2F02%2Fall%2FNodeJs%25E5%25AE%259E%25E7%258E%25B0%25E5%25AE%259A%25E6%2597%25B6%25E4%25BB%25BB%25E5%258A%25A1%2F) 作者:[卟想苌亣](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.sunbin.vip%2Fabout%2F) 来源:个人博客
评论
表情
发送
12
评论