Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一次运行所有过去的作业_Javascript_Node.js_Node Schedule - Fatal编程技术网

Javascript 一次运行所有过去的作业

Javascript 一次运行所有过去的作业,javascript,node.js,node-schedule,Javascript,Node.js,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(

我正在使用创建基于数组的作业队列。但是,我注意到节点调度只在将来运行作业

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

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]);
  });
}
const schedule=require('node-schedule');
函数随机日期(开始、结束){
返回新日期(start.getTime()+Math.random()*(end.getTime()-start.getTime());
}
开始=新日期()
让结束=新日期()
start.setMinutes(start.setMinutes()-35)//将作业设置为过去的35分钟
end.setSeconds(end.setMinutes()-10)//设置过去10分钟的作业
/**
*创建调度程序
*/
设arr=[]
const numb_jobs=50
for(设i=0;i
脚本运行时,如何在队列开头运行所有过去的作业,有什么建议吗


谢谢你的回复

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


我认为这是一种合理的行为。时间点(过去)从未到达,因此任务从未运行。您是否有特定的用例?@appleapple Thx供您回复!我正在开发electron,当有人启动应用程序时,所有过去的作业都应该运行。然后,也许自己执行这些任务?很容易说应该运行哪个任务。或者注册一个(长寿命)服务?(不过,您仍然需要处理断电时间。)