使用一段时间循环创建CRON作业



有几个库(尤其是nodejs and javaScript(允许您实现cron作业并随后将它们托管在服务器上。

本质上,Cron Jobs在我看来,只不过是在一天的特定时间/日期执行的重复任务。

我想知道这些库之间的区别是什么,只是在循环时说一个习惯。例如,在JavaScript中,我们可以写:

var keepRunning = true
while (keepRunning) {
    setTimeout(function () {
        // call function to be executed when time constraint satisfied
    }, 5000);
}

我的问题是:

  • 为什么我们使用Cron Job库?上面的自定义功能上方有什么好处?

这将无法正常工作:

var keepRunning = true
while (keepRunning) {
    setTimeout(function () {
        // call function to be executed when time constraint satisfied
    }, 5000);
}

该代码将尽可能快地安排新的setTimeout回调,而keepRuning是正确的,切勿放弃呼叫堆栈,并让事件循环运行任何这些回调。它可能会消耗您的所有内存,而无需运行一次计划的代码。

您可以做的就是这样:

var keepRunning = true;
function run() {
  if (keepRunning) {
    // call function to be executed when time constraint satisfied
    setTimeout(run, 5000);
  }
}
setTimeout(run, 5000);

如果您想一次安排所有回调,那么您可能会执行这样的操作:

for (let i = 1; i <= 100; i++) {
    setTimeout(function () {
        // call function to be executed when time constraint satisfied
    }, 5000 * i);
}

但是,在此示例中,您需要将超时乘以迭代变量,以确保它们不安排同时运行 - 即,它们仍然立即安排,但后来在不同的时间运行。<<<<<<<<<<<<<<<<<<

请记住,JavaScript运行到完成,稍后将在呼叫堆栈放开时执行回调。 forwhile循环loop挡住事件循环也很重要,并且在循环运行时无法处理任何事件。

cron处理非常特定的事件远胜于此。如果您希望每天上午9点发生某些事情,那么您绝对必须通过这种方法使用Cron。

cron可以测量时期的时间,是调度任务的最准确方法。我还会想象,这将产生比您建议的更好的表现。

为什么不使用cron?

库是有用代码的集合。这些集合倾向于将大量功能,对象等分组。

您的示例只是一种几乎没有多功能性的情况。图书馆将为您的循环提供更多选择,并且不仅可以解决该费率,还可以提供其他因素(取决于您参考的特定库(。

最新更新