【问题标题】:node-schedule how can I access the current rule which is being executed?node-schedule 如何访问正在执行的当前规则?
【发布时间】:2016-10-07 07:44:24
【问题描述】:

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

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

【问题讨论】:

    标签: node.js cron node-cron


    【解决方案1】:

    我解决这个问题的方法是创建一个对象,将计划分配给该对象,然后在包含规则。

    像这样:

    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
    }
    

    您不应该使用粗箭头()=&gt; {,而必须使用正常的function () { 方法来创建函数。如果您使用粗箭头方法,您将无法通过this.rule 访问job.rule

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多