javascript - 在 Node.js 中编写可重新调度的 cron 作业

标签 javascript node.js cron scheduled-tasks node-cron

我正在使用node-schedule用于编写 cron 作业的 Node 包。我能够编写一个简单的时间表,但我想要的是一个可重新安排的工作。

在我的应用程序中,用户可以在特定日期启动任务。现在我可以通过下面的代码轻松实现这一点。

var schedule = require('node-schedule');
var date = new Date(2012, 11, 21, 5, 30, 0);

var j = schedule.scheduleJob(date, function(){
  console.log('Do something on scheduled date');
});

我遇到的问题是如何重新安排选定的预定作业。

假设,如果用户 A 启动了一项在日期 10/14/2017 运行的作业,那么我创建了一个新的 cron 作业在日期 运行2017 年 10 月 14 日。但是现在用户A决定将任务日期更改为1/14/2017,那么我如何识别用户A创建的任务队列中已有的多个任务(由其他用户创建),然后将该 cron 作业重新安排到新日期,即 2017 年 1 月 14 日?

最佳答案

j 有一个可以调用的reschedule 方法。请参阅https://www.npmjs.com/package/node-schedule#jobreschedulespec .

j.reschedule(new Date);

要跟踪作业,您可以使用对象将用户映射到计划的作业。

const userJobs = {};

userJobs['user A'] = schedule.scheduleJob(date, () => {
  console.log('Do something on scheduled date');
  delete userJobs['user A'];
});

userJobs['user A'].reschedule(new Date);

关于javascript - 在 Node.js 中编写可重新调度的 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213774/

相关文章:

Javascript素数函数控制台问题

javascript - 元音消除困难

javascript - google-cloud TypeError : gcs. bucket 不是函数

javascript - 如何用生成的子进程替换 node.js 进程?

与 cronjob 连续并发运行的 php 脚本

python - 查找 shell 脚本中调用的每个进程的 pid

javascript - 如何在 native react 中获取给定特定子键的所有父键

javascript - 如果需要在 rethinkdb 中创建数据库

cron - ansible 创建工作 cronjobs

javascript - 平滑滚动 div 到 div