当前位置:首页 > 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结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…