node-schedule

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

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

开始课程

什么是 node-schedule?

node-schedule 是一个用于在 Node.js 环境中安排任务(类似 cron)的灵活库。它允许你使用 cron 语法、时间间隔或特定日期按时执行 JavaScript/TypeScript 函数。该库非常适合创建后台任务、定期通知、数据清理以及其他自动化流程。

为什么需要 node-schedule?

在 Web 应用中,经常需要按时间而非用户请求来执行代码。例如:发送每日报告、归档日志、检查服务器状态。node-schedule 提供了一种简单可靠的方式来实现此功能,无需复杂的队列系统。与 setInterval 不同,它支持复杂的 cron 调度,并考虑了时区。

安装

通过 npm 或 yarn 安装该库:

npm install node-schedule# 或yarn add node-schedule

对于 TypeScript,额外安装类型定义:

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

主要功能

  • Cron 调度:支持标准 cron 语法(分钟、小时、天、月)。
  • 取消任务:能够取消已计划的执行。
  • 一次性任务:在特定日期执行。
  • 重复性任务:以固定间隔重复执行。
  • 错误处理:内置错误回调支持。

TypeScript 代码示例

import * as schedule from 'node-schedule';

// 任务:每分钟执行一次const job = schedule.scheduleJob('*/1 * * * *', () => { console.log('任务执行于:', new Date().toISOString());});

// 一次性任务:10 秒后执行const date = new Date(Date.now() + 10000);schedule.scheduleJob(date, () => { console.log('一次性任务');});

// 30 秒后取消任务setTimeout(() => { job.cancel(); console.log('任务已取消');}, 30000);

// 使用重复规则的任务const rule = new schedule.RecurrenceRule();rule.hour = 14;rule.minute = 30;schedule.scheduleJob(rule, () => { console.log('每天 14:30 执行的任务');});

何时使用

node-schedule 非常适用于:

  • 后台工具:清理临时文件、备份。
  • 通知:按计划发送邮件或推送通知。
  • 监控:定期检查服务健康状态。
  • 集成:按 cron 计划与外部 API 同步。

不要将 node-schedule 用于需要高精度(毫秒级)或分布式执行的任务(此类情况更适合使用 Bull 或 RabbitMQ 等队列)。

该库轻量级、无需外部依赖,并且能与 Express、NestJS 或纯 Node.js 完美配合使用。

推荐