2

使用 node-scheduler 设置重复作业。我需要在几个特定时间每周工作 7 天- 例如上午 5:45、上午 06:30、上午 11:15 等。

我设置了规则:

let rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [1,2,3,4,5,6,7]

现在,如果我将小时和分钟添加为数组,它们看起来就像它们在所有分钟内都贯穿所有小时 - 例如

rule.hour = [5,6,11];
rule.minute = [45,30,15];

因此,将在上午 5:45、上午 6:45、上午 11:45、上午 5:30、上午 6:30、上午 11:30 等运行。

如何使用规则来设置确切的时间?同样,在我的示例中,上午 5:45、上午 06:30、上午 11:15

4

2 回答 2

2

node-schedule模块似乎支持 cron 语法。但是由于您想要的计划不能用 cron 在单个规则中表示,您也不能在 node-schedule 中的单个规则中定义它。使用dayOfWeek,hour和规则的定义将作业安排在 ,和minute的每个组合上day,就像 cron 规则一样。hourminute

查看文档中的重复规则调度部分,如何为每天的特定时间定义规则,并为每次需要创建和安排单独的规则

let hour = [5, 6, 11];
let minute = [45, 30, 15];

for (let i = 0; i < hour.length; i++) {
  let rule = new schedule.RecurrenceRule();
  rule.dayOfWeek = [0, 1, 2, 3, 4, 5, 6];
  rule.hour = hour[i];
  rule.minute = minute[i];

  let j = schedule.scheduleJob(rule, function(){
    //your job
  });
}
于 2019-03-30T00:08:28.750 回答
1

另一种方法是使用Object Literal Syntax。如果工作日未指定如下所示,则申请每天安排时间。

let times = [
  {hour: 5, minute: 45}, 
  {hour: 6, minute: 30}, 
  {hour: 11, minute: 15}
];
times.forEach(function(time) {
  var j = schedule.scheduleJob(time, function() {
    // your job
    console.log('Time for tea!');
  });
})

于 2019-03-30T00:35:35.693 回答