Nodejs中eggjs的定时计时
Nodejs中eggjs的定时计时
function startCron(interval, listener) {
const now = Date.now();
let nextTick;
do {
nextTick = interval.next().getTime();
} while (now >= nextTick);
setTimeout(() => {
listener();
startCron(interval, listener);
}, nextTick - now);
}
这个 do...while 是干嘛的
2 回复
interval.next().getTime()
有可能比当前时间晚,所以要一直获取直到第一个可用时间
在Node.js中使用Egg.js框架实现定时任务,通常会借助egg-schedule
这个插件。egg-schedule
允许你定义和管理定时任务,非常简便和高效。
以下是一个简单的示例,展示如何在Egg.js项目中设置并使用定时任务:
-
安装
egg-schedule
插件在你的项目根目录下运行以下命令:
npm install egg-schedule --save
-
在
config/plugin.js
中启用插件exports.schedule = { enable: true, package: 'egg-schedule', };
-
在
app/schedule
目录下定义定时任务创建一个文件,例如
app/schedule/myTask.js
,并添加以下内容:module.exports = app => { const { cron } = app; cron.every('5s', async () => { console.log('This message is printed every 5 seconds'); // 在这里添加你的任务逻辑 }); };
-
启动你的Egg.js应用
确保一切配置正确后,运行以下命令启动应用:
npm run dev
你将会在控制台中看到每5秒打印一次的消息。
通过上述步骤,你就可以在Egg.js中轻松实现定时任务了。如果需要更复杂的调度策略,可以查阅cron
库的文档来配置不同的时间表达式。