当前位置:首页 > 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实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…