在Node.js

时间:2017-09-14 08:08:41

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

我正在使用node-schedule节点包来编写cron作业。我能写一个简单的日程安排,但我想要的是一个可重新安排的工作。

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

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作业重新安排到新日期,即1/14/2017?

1 个答案:

答案 0 :(得分:1)

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