我已经设置了节点计划来创建多个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);
});
}
我认为我可以通过回调构造函数访问规则!有没有办法做到这一点
答案 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
。