Nodejs中eggjs的定时计时

发布于 1周前 作者 phonegap100 来自 nodejs/Nestjs

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项目中设置并使用定时任务:

  1. 安装egg-schedule插件

    在你的项目根目录下运行以下命令:

    npm install egg-schedule --save
    
  2. config/plugin.js中启用插件

    exports.schedule = {
      enable: true,
      package: 'egg-schedule',
    };
    
  3. 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');
        // 在这里添加你的任务逻辑
      });
    };
    
  4. 启动你的Egg.js应用

    确保一切配置正确后,运行以下命令启动应用:

    npm run dev
    

    你将会在控制台中看到每5秒打印一次的消息。

通过上述步骤,你就可以在Egg.js中轻松实现定时任务了。如果需要更复杂的调度策略,可以查阅cron库的文档来配置不同的时间表达式。

回到顶部