这篇文章主要介绍“node如何实现定时任务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node如何实现定时任务”文章能帮助大家解决问题。
node实现定时任务的方法:1、利用setTimeOut和event事件进行管理;2、对所有加入的事件进行排序,并且计算当前时间和最近一个事件发生时间的时间间隔;3、调用setTimeOut设置回调即可。
node定时任务(node-schedule模块)
实现一个每天凌晨十二点更新服务器上的git代码的功能
koa2框架下的app.js文件
import schedule from 'node-schedule';import updateCode from './controllers/hcpLan/fetch' const app = new Koa(); const router = new Router(); router.get( '/', (ctx, next) => { ctx.body = 'hello'}); app.use(router.routes()).use(router.allowedMethods()); let rule = new schedule.RecurrenceRule()rule.hour = 0rule.minute = 0rule.second = 0schedule.scheduleJob(rule, () => { updateCode.cloneRepo(); console.log('代码更新了!');}) app.listen(3000)
node-schedule原理:利用setTimeOut和event事件进行管理,对所有加入的事件进行排序,并且计算当前时间和最近一个事件发生时间的时间间隔,然后调用setTimeOut设置回调。总的来说分两种事件,一种是一次性的,一种是周期性的,一次性任务调用完就结束,周期性的会不断地循环调用,当一个周期性事件被调用后,会根据周期生成下一个周期任务,并添加到任务列表中,重新排序。每个任务调用结束,都会计算并准备下一个任务。
一、设置定时器
node-schedule允许多种规则去实现定时
Cron风格定时器
* * * * * *┬ ┬ ┬ ┬ ┬ ┬│ │ │ │ │ |│ │ │ │ │ └ 一周的星期 (0 - 7) (0 or 7 is Sun)│ │ │ │ └───── 月份 (1 - 12)│ │ │ └────────── 月份中的日子 (1 - 31)│ │ └─────────────── 小时 (0 - 23)│ └──────────────────── 分钟 (0 - 59)└───────────────────────── 秒 (0 - 59, OPTIONAL) var schedule = require('node-schedule');//当分钟为42时,执行一个cron任务var j = schedule.scheduleJob('42 * * * *', function(){ console.log('执行了!');});
Date对象规则定时器
var schedule = require('node-schedule');var date = new Date('2017-09-26 22:00:00'); var j = schedule.scheduleJob(date, function(){ console.log('执行了!');});
RecurrenceRule实例规则定时器
var schedule = require('node-schedule'); var rule = new schedule.RecurrenceRule();rule.minute = 42; var j = schedule.scheduleJob(rule, function(){ console.log('执行了!');});
关于“node如何实现定时任务”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。