一次处理所有过去的工作

时间:2019-05-01 13:54:19

标签: javascript node.js node-schedule

我正在使用node-schedule创建基于数组的作业队列。但是,我注意到 node-schedule 仅在将来运行作业。

为了证明这一点,我创建了一个最小的可行示例:

const schedule = require('node-schedule');

function randomDate(start, end) {
  return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}

let start = new Date()
let end = new Date()
start.setMinutes(start.setMinutes() - 35) // set job 35 Minutes in the past
end.setSeconds(end.setMinutes() - 10) // set job 10 Minutes in the past

/**
 * Create Scheduler
 */
let arr = []
const numb_jobs = 50
for (let i = 0; i < numb_jobs; i++) {
  d = randomDate(start, end)
  arr.push([i, d])

  schedule.scheduleJob(arr[i][1], function () {
    console.log('Job  -- #' + arr[i][0] + ' -- executed at: ' + arr[i][1]);
  });
}

有人建议如何在脚本运行时在队列的开头运行所有过去的作业?

感谢您的答复!

1 个答案:

答案 0 :(得分:1)

scheduleJob返回一个作业对象。 您可以取消/重新计划并从Job :: invocations数据获取数据。

https://github.com/node-schedule/node-schedule/blob/master/lib/schedule.js

https://www.npmjs.com/package/node-schedule#jobreschedulespec