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

node-schedule how can I access the current rule which is being executed?

我有节点计划设置来创建多个 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);
  });
}

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

我解决此问题的方法是创建一个 对象,将计划分配给该 对象,然后创建一个 属性 在持有 规则 .

的对象上

像这样:

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 () { 方法来创建函数。如果您使用粗箭头方法,您将无法通过 this.rule.

访问 job.rule