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

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…