介绍
every-time-mirror 是一款 Node.js 模块,可以方便地实现某个函数在多个时间段内重复执行。该模块使用了 ES6 语法,并且具有异常处理和错误日志功能。
安装
在安装之前,需要先安装 Node.js 和 npm。
安装命令:
npm install every-time-mirror
使用
使用 every-time-mirror 模块非常简单,只需要先引入模块,然后创建一个 EveryTimeMirror 的实例对象:
const EveryTimeMirror = require('every-time-mirror'); const etm = new EveryTimeMirror();
然后,利用实例对象中的 run
函数,来执行你想要的代码:
etm.run((time) => { console.log(`现在是 ${time},时间到了!`); }, '1 * * * * *');
上述代码实现的功能是每分钟的第一秒,输出一个日志信息。
语法
以下是 every-time-mirror 支持的时间格式:
字段 | 允许的值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
时 | 0-23 | , - * / |
日 | 1-31 | , - * ? / L W |
月 | 1-12 或者 JAN-DEC | , - * / |
周 | 0-6 或者 SUN-SAT | , - * ? / L # |
除了这些字段外,every-time-mirror 还支持使用 L
字符,表示月份或者星期的最后一天,使用 W
字符,表示最接近指定日的工作日,以及使用 #
字符,表示每个月的第几周。
例如,你可以定义一个每周二和周四的 10:30 和 14:30 执行的定时任务:
etm.run((time) => { console.log(`现在是 ${time},时间到了!`); }, '30 10,14 * * 2,4');
指令
every-time-mirror 还提供了一些命令,可以方便地进行任务的管理。
stop
停止定时任务。
etm.stop();
start
启动定时任务。
etm.start();
getStatus
获取当前定时任务的状态。
const status = etm.getStatus(); console.log(status);
输出的 status
对象格式如下:
{ count: 2, nextTime: '2022-07-31T14:30:00.000Z', running: true }
其中,count
表示该定时任务已经执行的次数,nextTime
表示下一次将要执行的时间,running
表示该任务是否正在运行。
日志
every-time-mirror 支持自定义日志输出,你可以使用 logger
参数来传入一个日志函数,该函数会在任务每次执行完毕后被调用。
const etm = new EveryTimeMirror({ logger: (message) => { console.log(`[${Date.now()}] ${message}`); } });
总结
every-time-mirror 是一款非常方便的 Node.js 模块,可以帮助我们实现多个时间段内的定时任务,而且使用起来非常简单。我们可以根据自己的需求来定义定时任务的执行时间,同时也可以使用指令来方便地管理任务的状态和运行情况。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedbc59b5cbfe1ea06119f5