首页 前端知识 nodejs 定时任务的执行 node-cron node-schedule

nodejs 定时任务的执行 node-cron node-schedule

2024-06-14 23:06:50 前端知识 前端哥 980 155 我要收藏

nodejs 定时任务的执行

    • setInterval 内置模块
    • node-schedule第三方库
      • 安装
      • 使用
      • 参数详解
      • 例子
    • node-cron第三方库
      • 安装
      • 使用
      • 参数详解
      • 例子
    • 区别

setInterval 内置模块

Node.js 内置了一个定时器模块 setIntervalsetTimeout,可以帮助我们实现简单的定时任务。该方法接受两个参数:要执行的函数和时间间隔。示例代码如下:

// 使用 setTimeout 执行一次函数
setTimeout(() => {
  console.log("这是一个定时任务 - 一次性执行");
}, 1000); // 1秒后执行

// 使用 setInterval 每隔一段时间执行函数
const intervalId = setInterval(() => {
  console.log("这是一个定时任务 - 重复执行");
}, 2000); // 每2秒执行一次

// 清除定时任务
clearInterval(intervalId); // 停止重复执行

可以根据实际业务需要来修改执行的任务内容和时间间隔,从而实现定时任务。

但是,如果我想定义一个每天早上六点执行的任务,那使用 setInterval来实现是一件很痛苦的事情,这里推荐使用第三方库node-schedule,就可以轻松解决,实现各种复杂的任务调动。也可使用第三方库node-cron来解决简单的任务调动。

node-schedule第三方库

模块提供了一种更友好的 API 来设置定时任务,支持多种定时方式

安装

npm install node-schedule --save

使用

const schedule = require('node-schedule');

const rule = new schedule.RecurrenceRule();
rule.hour = 6; // 每天的第6小时执行
rule.minute = 0; // 每天的第0分钟执行

const job = schedule.scheduleJob(rule, () => {
  console.log('每天早上六点执行的任务');
});

参数详解

schedule.scheduleJob('* * * * * *', function(){
});

六个*依次代表 *表示每

  • hour: 一个数字,表示小时(0-23)。
  • minute: 一个数字,表示分钟(0-59)。
  • second: 一个数字,表示秒(0-59)。
  • date: 一个数字,表示日期(1-31)。
  • month: 一个数字,表示月份(0-11,其中 0 代表 1 月)。
  • dayOfWeek: 一个数字,表示一周中的某天(0-6,其中 0 代表星期天)。

例子

  • 每分钟的第30秒触发: 30 * * * * *
  • 每小时的1分30秒触发 :30 1 * * * *
  • 每天的凌晨1点1分30秒触发 :30 1 1 * * *
  • 每月的1日1点1分30秒触发 :30 1 1 1 * *
  • 每年的1月1日1点1分30秒触发 :30 1 1 1 1 *
  • 每周1的1点1分30秒触发 :30 1 1 * * 1

node-cron第三方库

安装

npm install node-cron --save

使用

const cron = require('node-cron');
cron.schedule('0 0 6 * * *', () => {
    console.log('每天早上六点执行的任务');
});

参数详解

cron.schedule('* * * * * *', () => {
});

Cron 表达式是一个字符串,由空格分隔的 6 或 7 个字段组成,用于指定任务的执行时间。这些字段分别代表:

  • 秒(可选,范围 0-59)

  • 分钟(0-59)

  • 小时(0-23)

  • 日期(1-31)

  • 月份(1-12 或 JAN-DEC)

  • 星期(0-7 或 SUN-SAT,其中 0 和 7 都代表星期天)

  • 年份(可选,通常省略)

  • 例子

  • 每分钟的第30秒触发: 30 * * * * *

  • 每小时的1分30秒触发 :30 1 * * * *

  • 每天的凌晨1点1分30秒触发 :30 1 1 * * *

  • 每月的1日1点1分30秒触发 :30 1 1 1 * *

  • 每年的1月1日1点1分30秒触发 :30 1 1 1 1 *

  • 每周1的1点1分30秒触发 :30 1 1 * 1 *

区别

node-cron是一个基于cron表达式的模块,cron表达式可以用来定义定期执行的规则,支持分钟、小时、天、周、月等粒度。node-cron使用起来比较简单,可以通过类似于命令行的方式定义定期执行的规则和要执行的任务。

node-schedule则是一个更加灵活的定时任务调度模块,可以通过人性化的时间表达方式定义定期执行的规则,支持秒、分、时、日、周、月等维度。node-schedule的使用更加灵活,可以处理复杂的定时任务调度场景,比如每周三执行一次,或者每个月最后一天执行一次。它还支持链式调用、取消定时任务等功能。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/12141.html
标签
评论
发布的文章

fastjson升级为fastjson2

2024-06-20 09:06:18

protobuf对象与JSON相互转换

2024-06-20 09:06:14

NVM 及 PNPM 安装

2024-06-20 09:06:01

npm有哪些插件包??

2024-06-20 09:06:01

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!