Node.js 如何在node js中调度连续运行的函数?

Node.js 如何在node js中调度连续运行的函数?,node.js,Node.js,我想安排一个功能,将运行每3秒,直到我的应用程序退出。我不使用setInterval,因为如果出现问题,就不应该再安排它,所以我使用setTimeout 我写了这样的东西 function someWork(){ setTimeout(function(){ //do Stuff here someWork(); },3000) } 它是否会导致内存或性能泄漏。或者有更好的解决方案吗?自动化后端任务的最佳方法是使用cron作业。这是一个救援模块。以下是一个例子- va

我想安排一个功能,将运行每3秒,直到我的应用程序退出。我不使用setInterval,因为如果出现问题,就不应该再安排它,所以我使用setTimeout 我写了这样的东西

function someWork(){
   setTimeout(function(){
     //do Stuff here
     someWork();
},3000)
}

它是否会导致内存或性能泄漏。或者有更好的解决方案吗?

自动化后端任务的最佳方法是使用cron作业。这是一个救援模块。以下是一个例子-

var CronJob = require('cron').CronJob;
var job = new CronJob('*/3 * * * * *', function() {
  /*
   * Runs every 3 seconds as long as your server is running
   */
  }, function () {
    /* This function is executed when the job stops */
  },
  true, /* Start the job right now */
  timeZone /* Time zone of this job. */
);

是的,
setTimeout
是一种方法。您可以使用外部库,如前面提到的或,但它们也在内部使用
setTimeout
,因此如果您不需要任何其他功能,那么使用外部库就没有意义

您已经知道
setInterval
的两个陷阱:

  • 它忽略了错误
  • 它不关心任务的执行时间是否超过间隔

  • “递归”
    setTimeout
    不会导致内存泄漏或堆栈溢出。请参阅例如

    如何使用停止您的
    setInterval
    执行?问题是,我不知道在这里执行操作需要多少时间//可能需要3秒钟以上,因此如果使用setInterval,它将在上一个未完成时再次运行此函数,因此我必须确保该方法已完成,并且可以再次执行在3秒间隔之前,例如,在上一次执行完成后,或者必须至少等待3秒,最多等待上一次执行的持续时间?