繁体   English   中英

使用node-schedule以*特定*次运行

[英]Using node-schedule to run at *specific* times

使用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

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

查看文档中的重复规则计划部分,如何定义每天特定时间的规则,以及为每次需要创建和计划单独的规则

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

另一种方法是使用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!');
  });
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM