node-schedule — TypeScript 任务调度器

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 node-schedule?

node-schedule 是一个流行的库,用于在 Node.js 环境中安排延迟和重复执行的任务。它使用 JavaScript 编写,但由于提供了类型定义(DefinitelyTyped),也能与 TypeScript 完美配合。该库允许您在特定时间、按计划(类似 cron 的语法)或按指定间隔执行函数。

为什么需要 node-schedule?

在现代 Web 应用程序中,经常需要执行后台操作:清理缓存、发送电子邮件、备份数据库、从外部 API 更新数据或生成报告。Node-schedule 无需使用外部服务(例如 Linux 中的 cron)即可解决此问题——所有操作都在您的 TypeScript 应用程序内部运行。

安装

通过 npm 安装该库及其类型定义:

npm install node-schedulenpm install --save-dev @types/node-schedule

之后,您可以在 TypeScript 项目中导入它:

import * as schedule from 'node-schedule';

主要功能

  • 按 cron 字符串计划 — 指定分钟、小时、日期、月份和星期几。
  • 在特定日期计划 — 传递 Date 对象或字符串。
  • 按间隔重复 — 例如,每 10 分钟一次。
  • 取消任务 — 可以取消已计划的任务执行。
  • 检查活动任务 — scheduledJobs 方法返回所有活动任务。

TypeScript 代码示例

import * as schedule from 'node-schedule';

// 每分钟执行一次的任务(在第 30 秒)const job = schedule.scheduleJob('30 * * * * *', () => { console.log('任务执行时间:', new Date().toLocaleString());});

// 在特定日期执行的任务const date = new Date(Date.now() + 5000); // 5 秒后schedule.scheduleJob(date, () => { console.log('5 秒后的一次性任务');});

// 每 10 秒重复执行const intervalJob = schedule.scheduleJob('*/10 * * * * *', () => { console.log('每 10 秒执行一次');});

// 20 秒后取消任务setTimeout(() => { job.cancel(); console.log('第一个任务已取消');}, 20000);

// 检查活动任务console.log('活动任务:', Object.keys(schedule.scheduledJobs));

何时使用 node-schedule

  • 当需要在 Node.js 应用程序内部按计划执行任务,而无需外部 cron 时。
  • 用于简单的后台任务:清理日志、发送邮件、更新缓存。
  • 当需要 cron 语法的灵活性时(例如,每月第一天凌晨 3:00)。
  • 如果您不想依赖操作系统(跨平台性)。

不要将 node-schedule 用于高负载的分布式系统——在这种情况下,任务队列(Bull、RabbitMQ)或云调度器(AWS CloudWatch、GCP Cloud Scheduler)更合适。

该库简单、轻量,非常适合中小型 TypeScript 项目。

推荐