当前位置: 首页 > 工具软件 > node-schedule > 使用案例 >

时间自动过期解决方案之node-schedule

岑毅庵
2023-12-01

前言

时间自动过期,除了用数据库提供的事件,触发器等解决,也可以用node-schedule,那什么是node-schedule?

node-schedule简介

Node Schedule 是一个Node.js的灵活的类似cron又不类似的任务调度库.它允许你调度任务(任意函数)在特殊的日期执行,并循环执行。他只在在任何给定的时间里使用一个定时器(而不是每隔一秒/一分钟来重新判断将要执行的任务)
注意 Node Schedule 是被设计来进行进程内调度,也就是说调度任务只能在你的脚本运行时才能有效以及调度将在执行成功后消失。如果你需要在你脚步 不 运行的时候调度任务,那就需要考虑使用cron.

安装

npm install node-schedule
cnpm install node-schedule

简单使用schedule.scheduleJob(data,function)

const schedule = require('node-schedule');
let checkoverdue= require('checkoverdue');
const scheduleFun = () => {
  schedule.scheduleJob('* * * * * *', async () => {//每秒执行
     await checkoverdue(); //检查时间是否过期
  });
};
exports.scheduleCronstyle = scheduleFun;

参数

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ 一周的星期 (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── 月份 (1 - 12)
│    │    │    └────────── 月份中的日子 (1 - 31)
│    │    └─────────────── 小时 (0 - 23)
│    └──────────────────── 分钟 (0 - 59)
└───────────────────────── 秒 (0 - 59, OPTIONAL)

时间过期可以修改时间数据库状态,或者将其删除,这里用到的是把时间转化为时间戳比较。

 let nowtime = new Date().getTime();//当前时间戳
 let mychecktime;//需要检查的时间
 let check = new Date(mychecktime).getTime();
      if (nowtime > check) {
        //修改数据库相关状态
      }
exports.checkoverdue=checkoverdue

取消任务

可以使用 cancel() 终止一个运行中的任务。

 schedule .cancel();

参考

官方链接

 类似资料: