当前位置:首页 > JavaScript

cron js实现

2026-03-02 06:20:46JavaScript

使用 node-cron 实现定时任务

node-cron 是一个流行的 Node.js 库,用于在指定时间执行任务。安装方式如下:

npm install node-cron

基本用法示例:

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

cron.schedule('* * * * *', () => {
  console.log('每分钟执行一次');
});

使用 Agenda 实现高级任务调度

Agenda 是一个功能更丰富的任务调度库,支持持久化和复杂调度规则。安装方式:

cron js实现

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 的队列库,支持定时任务和任务队列管理。安装方式:

cron js实现

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);
});

原生 setTimeoutsetInterval

对于简单的定时任务,可以使用 Node.js 原生定时器:

// 延迟执行
setTimeout(() => {
  console.log('5秒后执行');
}, 5000);

// 间隔执行
const interval = setInterval(() => {
  console.log('每2秒执行一次');
}, 2000);

// 清除定时器
clearInterval(interval);

注意事项

  • 确保服务器时间准确,时区设置正确
  • 长时间运行的定时任务需要考虑内存泄漏问题
  • 生产环境建议使用持久化方案(如 Agenda)
  • 分布式部署时需要防止任务重复执行

标签: cronjs
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…