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

js实现cron

// 每小时执行一次
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

示例代码:

js实现cron

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

标签: jscron
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js轮播图实现原理

js轮播图实现原理

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…