1

我正在使用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 作业在日期10/14/2017运行。但是现在用户 A决定将任务日期更改为1/14/2017,那么我将如何从队列中已经存在的多个任务(由其他用户创建)中识别用户 A创建的任务,然后将该 cron 作业重新安排到新日期,即 2017 年 1 月 14 日?

4

1 回答 1

3

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);
于 2017-09-14T08:37:09.030 回答