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