setTimeOut函数不会在每次延迟时间后调用

时间:2018-12-03 03:56:04

标签: javascript node.js rabbitmq

我的代码如下所示:

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

在这里发生的是setTimeOut内部的函数被偶尔而不是每次调用。那么如何使其每次都调用在函数内部编写的代码呢?

1 个答案:

答案 0 :(得分:2)

要了解 setTimeout 的工作方式,您需要了解javascript是异步的单线程的。

堆栈为空后,将执行

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

事件循环是始终检查堆栈是否为空并给函数提供执行机会的循环。要了解这一点,您可以检查事件循环的工作方式:http://latentflip.com/loupe