node-schedule如何访问正在执行的当前规则?

时间:2016-10-04 01:12:56

标签: node.js cron node-cron

我已经设置了节点计划来创建多个cron作业,这些cron作业是在循环中动态创建的。 schedule.scheduleJob 回调中的代码需要访问正在执行的当前规则。

因此,如果我每隔1,2和3分钟运行一次cron,我就会想要访问规则,以便告诉我我的1分钟cron现在正在运行。

// Create new cron for each iteration (creating 1-10 mins)
for (var x = 1; x<10; x++){
  var rule = new schedule.RecurrenceRule();
  rule.minute = new schedule.Range(0, 59, x);
  schedule.scheduleJob(rule, (RULE_SHOULD_ BE_HERE) => {
    // Can I access the RULE which is being executed NOW somehow?!
    functionThatRunsEveryX(rule.minute.step);
  });
}

我认为我可以通过回调构造函数访问规则!有没有办法做到这一点

1 个答案:

答案 0 :(得分:1)

我修复此问题的方法是创建对象,将计划分配给对象,然后在包含规则<的对象上创建属性/强>

像这样:     

matz
   self
end

您不应该使用胖箭for (var x = 1; x<10; x++){ var rule = new schedule.RecurrenceRule(); rule.minute = new schedule.Range(0, 59, x); // Do not use ()=> fat arrow, we need access to this of job var job = schedule.scheduleJob(rule, function () { // Must use this to access rule functionThatRunsEveryX(this.rule.minute.step); }); job.rule = rule; // Assign more values here if you wish job.foo = bar } ,而是必须使用正常()=> {方式创建函数。如果您使用胖箭头方法,则无法通过function () {访问job.rule