admin管理员组文章数量:1794759
Node.js定时任务之node
实际工作中,可能会遇到定时清除某个文件夹内容,定时发送消或发送邮件给指定用户,定时导出某些数据等。 node.js 中可以使用 node-schedule 来完成定时任务
安装
npm i node-schedule --save使用
使用的是 Cron 风格的定时器
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun) │ │ │ │ └───── month (1 - 12) │ │ │ └────────── day of month (1 - 31) │ │ └─────────────── hour (0 - 23) │ └──────────────────── minute (0 - 59) └───────────────────────── second (0 - 59, OPTIONAL)6个占位符分别标识 :秒 分 时 日 月 周几
- * 表示通配符,匹配该域的任意值,假如在 Minutes 域使用 * 表示每分钟都会触发事件
- ? 只能用在 DayofMonth 和 DayofWeek 两个域,它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用 * 表示不管星期几都会触发,实际上并不是这样。
- - 表示范围,例如 在 Minutes 域使用 5-20,表示从5分到20分钟每分钟触发一次
- / 表示起始时间开始触发,然后每隔固定时间触发一次,如在 Minutes 域使用 5/20 表示5分钟触发一次,而25,45等分别触发一次
- ‘,’ 表示枚举值,如在 Minutes 域使用 5, 20,表示在 5和20分每分钟触发一次
- 由于月份中的日期和星期中的日期这两个元素互斥,必须要对其中一个设置 ?
先看几个示例熟悉一下:
每分钟的第30秒触发: '30 * * * * *' 每小时的1分30秒触发 :'30 1 * * * *' 每天的凌晨1点1分30秒触发 :'30 1 1 * * *' 每月的1日1点1分30秒触发 :'30 1 1 1 * *' 2016年的1月1日1点1分30秒触发 :'30 1 1 1 2016 *' 每周1的1点1分30秒触发 :'30 1 1 * * 1' 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点开启定时任务
const schedule = require('node-schedule') schedule.scheduleJob(id, '30 * * * * *', () => { // 具体任务内容.... try { } catch(error) { } })取消定时任务
schedule.cancelJob(id)开启定时任务是,可以传入一个id,在取消任务时就可以根据 id 来取消了。
取消定时器还有一种方法 schedule.cancel()
版权声明:本文标题:Node.js定时任务之node 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686481400a72373.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论