2016-10-04 4 views
0

複数のcronジョブを作成するノードスケジュール設定があります。これらのcronジョブはループ内で動的に作成されます。 schedule.scheduleJobコールバック内のコードは、実行されている現在のルールにアクセスする必要があります。node-scheduleどのように実行されている現在のルールにアクセスできますか?

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

方法を行う方法はあります。そのよう

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.rulethis.ruleでアクセスすることはできません。

関連する問題