当前位置:首页 > JavaScript

js实现cron

2026-02-01 13:25:51JavaScript

使用 node-cron 库实现定时任务

node-cron 是一个流行的 Node.js 库,用于解析和调度基于 cron 表达式的任务。安装方式如下:

npm install node-cron

示例代码:

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

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

cron.schedule('0 0 * * *', () => {
  console.log('每天午夜执行的任务');
});

使用原生 JavaScript 实现简单定时器

对于不需要完整 cron 表达式的简单场景,可以使用 setIntervalsetTimeout

// 每小时执行一次
setInterval(() => {
  console.log('每小时执行的任务');
}, 60 * 60 * 1000);

// 每天特定时间执行
function scheduleDaily(hour, minute, callback) {
  const now = new Date();
  const target = new Date(
    now.getFullYear(),
    now.getMonth(),
    now.getDate(),
    hour,
    minute
  );

  let delay = target - now;
  if (delay < 0) {
    target.setDate(target.getDate() + 1);
    delay = target - now;
  }

  setTimeout(() => {
    callback();
    scheduleDaily(hour, minute, callback);
  }, delay);
}

scheduleDaily(9, 30, () => {
  console.log('每天9:30执行的任务');
});

使用 cron-parser 解析 cron 表达式

如果需要解析 cron 表达式但不执行任务,可以使用 cron-parser

npm install cron-parser

示例代码:

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

const interval = parser.parseExpression('*/5 * * * *');
console.log('下次执行时间:', interval.next().toString());

浏览器环境下的定时任务

浏览器环境中可以使用 Web Workers 实现后台定时任务:

// worker.js
self.onmessage = function(e) {
  if (e.data === 'start') {
    setInterval(() => {
      self.postMessage('tick');
    }, 60000); // 每分钟
  }
};

// 主线程
const worker = new Worker('worker.js');
worker.onmessage = (e) => {
  if (e.data === 'tick') {
    console.log('每分钟触发');
  }
};
worker.postMessage('start');

高级调度库 bullagenda

对于需要持久化和分布式调度的复杂场景:

npm install bull

示例代码:

const Queue = require('bull');

const queue = new Queue('scheduled-jobs');
queue.add({ foo: 'bar' }, { repeat: { cron: '0 0 * * *' } });

queue.process((job) => {
  console.log('处理每日任务', job.data);
});

js实现cron

标签: jscron
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js如何实现继承

js如何实现继承

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

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统…

js轮播图实现原理

js轮播图实现原理

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

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在H…