Node 定时任务

定时任务

  • 使用 node-schedule

    npm install -S node-schedule 或 yarn add node-schedule
    
  • 实例代码

    const schedule = require('node-schedule')
    
    const rule = new schedule.RecurrenceRule()
    
    /** 执行的秒数 */
    const times = [ 10, 11, 21, 31, 41, 51 ]
    
    rule.second = times
    
    /** 每 10 秒 定时执行一次 */
    schedule.scheduleJob(rule, () => {
      console.log('schedule:' + new Date())
    })
    
  • node-schedule

    *  *  *  *  *  *
    ┬ ┬  ┬ ┬ ┬ ┬
    │ │  │ │ │ │
    │ │  │ │ │ └ 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个占位符从左到右分别代表:秒、分、时、日、月、周几
    表示通配符,匹配任意,当秒是*时,表示任意秒数都触发,其它类推
    
    
  • 参数介绍

    每1秒触发: '* * * * * *'
    
    每分钟的第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'
    
  • 特殊例子 (每 5 秒执行一次)

    const schedule = require('node-schedule')
    
    const rule = new schedule.RecurrenceRule()
    
    const times = [ 1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56 ]
    
    
    /**
      * second 秒
      * minute 分钟
      * hour 小时
      * 设置三个值 对应三个时间阀值
      */
    
    rule.second = times
    
    schedule.scheduleJob(rule, () => {
      console.log(123)
    })
    
  • 取消定时器 cancel 方法

    const schedule = require('node-schedule')
    
    let counter = 1
    
    const timer = schedule.scheduleJob('* * * * * *', () => {
      console.log('定时器触发次数:' + counter)
      counter++
    })
    
    setTimeout(() => {
      timer.cancel()
      console.log('定时器取消')
    }, 5000)
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容