cron js实现
使用 node-cron 实现定时任务
node-cron 是一个流行的 Node.js 库,用于在指定时间执行任务。安装方式如下:
npm install node-cron
基本用法示例:
const cron = require('node-cron');
cron.schedule('* * * * *', () => {
console.log('每分钟执行一次');
});
使用 Agenda 实现高级任务调度
Agenda 是一个功能更丰富的任务调度库,支持持久化和复杂调度规则。安装方式:

npm install agenda
示例代码:
const Agenda = require('agenda');
const agenda = new Agenda({db: {address: 'mongodb://localhost/agenda'}});
agenda.define('send email', async job => {
const { to } = job.attrs.data;
await sendEmail(to);
});
agenda.every('3 hours', 'send email', {to: 'user@example.com'});
(async function() {
await agenda.start();
})();
使用 Bull 实现队列任务
Bull 是一个基于 Redis 的队列库,支持定时任务和任务队列管理。安装方式:

npm install bull
示例代码:
const Queue = require('bull');
const emailQueue = new Queue('email');
emailQueue.add({to: 'user@example.com'}, {
repeat: {cron: '0 9 * * *'},
attempts: 3
});
emailQueue.process(async job => {
await sendEmail(job.data.to);
});
原生 setTimeout 和 setInterval
对于简单的定时任务,可以使用 Node.js 原生定时器:
// 延迟执行
setTimeout(() => {
console.log('5秒后执行');
}, 5000);
// 间隔执行
const interval = setInterval(() => {
console.log('每2秒执行一次');
}, 2000);
// 清除定时器
clearInterval(interval);
注意事项
- 确保服务器时间准确,时区设置正确
- 长时间运行的定时任务需要考虑内存泄漏问题
- 生产环境建议使用持久化方案(如 Agenda)
- 分布式部署时需要防止任务重复执行






