Javascript setTimeOut函数不会在每次延迟的持续时间后调用

Javascript setTimeOut函数不会在每次延迟的持续时间后调用,javascript,node.js,rabbitmq,Javascript,Node.js,Rabbitmq,我的代码如下所示: setTimeout(function () { //send message in rabbitmq queue }, 5 * 60 * 1000); 这里发生的是setTimeOut中的函数偶尔被调用,而不是每次。那么如何让它每次调用函数内部编写的代码呢 要了解setTimeout的工作原理,您需要知道javascript是异步的和单线程的 setTimeout函数在堆栈为空时执行。因此,函数的执行主要取决于堆栈何时变空 事件循环总是检查堆栈是否为空,并提供执行函

我的代码如下所示:

setTimeout(function () {
  //send message in rabbitmq queue 
}, 5 * 60 * 1000);

这里发生的是setTimeOut中的函数偶尔被调用,而不是每次。那么如何让它每次调用函数内部编写的代码呢

要了解setTimeout的工作原理,您需要知道javascript是异步的和单线程的

setTimeout函数在堆栈为空时执行。因此,函数的执行主要取决于堆栈何时变空


事件循环总是检查堆栈是否为空,并提供执行函数的机会。要了解这一点,您可以查看事件循环的工作原理:

这需要大量的说明和额外的信息。您如何验证此问题(您如何知道它不起作用)?你看到发生了什么,这与你的预期有什么不同?查看日志,也许它会被调用,但偶尔会失败?@dehumanizer我查看了日志,然后只来到了conclusion@MrugeshThaker这需要更多的说明、步骤和确切的目的,以及在哪里添加代码!没有任何细节,没有人能得出确切的问题和解决方案。我完全同意超时函数的堆栈概念。但这里发生的是,有时函数本身不会被调用。那么,有没有比这更好的保证延迟机制的其他选择呢?当你说有时,在那个时间发生了一些事情,影响了计时器停止它的执行。需要检查该条件。我检查了错误日志,但没有发现任何与此相关的错误。虽然这是一条相关评论,但不是答案。它没有解释OP为什么会有问题,如何解决,甚至没有提供解决方案。setTimeout不是一个“web API”,它是一个主机方法。它不要求主机连接到web或任何类型的网络。也许你的意思是。