我看到从docs您可以按名称逐个删除,例如...
var schedule = require('node-schedule');
// sample announcement
var rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [1, 2, 3, 4, 5];
rule.minute = 50;
rule.hour = 12;
var message = schedule.scheduleJob("AnnouncementOne", rule, function() {
// make my announcement
})
AnnouncementOne.cancel();
但我想代码得到所有的调度作业,然后循环通过他们删除每一个。我认为以下得到所有的作业...
var jobList = schedule.scheduledJobs;
它将以下内容输出到控制台...
{ 'AnnouncementOne':
Job {
job: [Function],
callback: false,
name: 'AnnouncementOne',
trackInvocation: [Function],
stopTrackingInvocation: [Function],
triggeredJobs: [Function],
setTriggeredJobs: [Function],
cancel: [Function],
cancelNext: [Function],
reschedule: [Function],
nextInvocation: [Function],
pendingInvocations: [Function] },
'AnnouncementTwo':
Job {
job: [Function],
callback: false,
name: 'AnnouncementTwo',
trackInvocation: [Function],
stopTrackingInvocation: [Function],
triggeredJobs: [Function],
setTriggeredJobs: [Function],
cancel: [Function],
cancelNext: [Function],
reschedule: [Function],
nextInvocation: [Function],
pendingInvocations: [Function] } }
如何循环jobList以删除每个作业?
替代代码:
var jobList = schedule.scheduledJobs;
for(jobName in jobList){
var job = 'jobList.' + jobName;
eval(job+'.cancel()');
}
6条答案
按热度按时间6tdlim6h1#
最好远离
eval
swvgeqrz2#
这可能不是最优雅的方法,但由于jobList缺少长度字段,下面是一种实现方法:
这将从列表中删除计划的作业。
要在删除作业之前检查作业是否存在:
当然,你也可以使用for-in。只要记住,如果你使用for-in,结果是不排序的,而结果在常规的for循环中是排序的,所以你可能会遇到一些意想不到的行为:
wh6knrhe3#
在一行中:
rkkpypqq4#
1tuwyuhd5#
你好,我有同样的问题,但你可以使用下面的代码.
以上代码将取消所有节点计划.它为我工作.
doinxwow6#
您还可以执行以下操作: