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