世界今亮点!node怎么实现定时任务

时间:2022-11-04 15:57:39       来源:PHP中文网

本教程操作环境:linux7.3系统、node18.4.0版、Dell G3电脑。


(资料图片)

node怎么实现定时任务?

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()/**每天的凌晨12点更新代码*/rule.hour = 0rule.minute = 0rule.second = 0/**启动任务*/schedule.scheduleJob(rule, () => {  updateCode.cloneRepo();  console.log("代码更新了!");}) app.listen(3000)
登录后复制

node-schedule原理:利用setTimeOut和event事件进行管理,对所有加入的事件进行排序,并且计算当前时间和最近一个事件发生时间的时间间隔,然后调用setTimeOut设置回调。总的来说分两种事件,一种是一次性的,一种是周期性的,一次性任务调用完就结束,周期性的会不断地循环调用,当一个周期性事件被调用后,会根据周期生成下一个周期任务,并添加到任务列表中,重新排序。每个任务调用结束,都会计算并准备下一个任务。

一、设置定时器

node-schedule允许多种规则去实现定时

1. 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("执行了!");});
登录后复制

2.Date对象规则定时器

var schedule = require("node-schedule");var date = new Date("2017-09-26 22:00:00"); var j = schedule.scheduleJob(date, function(){  console.log("执行了!");});
登录后复制

3.RecurrenceRule实例规则定时器

var schedule = require("node-schedule"); var rule = new schedule.RecurrenceRule();rule.minute = 42; var j = schedule.scheduleJob(rule, function(){  console.log("执行了!");});
登录后复制

具体使用可查看github文档https://github.com/node-schedule/node-schedule

推荐学习:《nodejs视频教程》

以上就是node怎么实现定时任务的详细内容,更多请关注php中文网其它相关文章!

关键词: 定时任务 相关文章 启动任务