在快速应用程序的路由中运行 setInterval 函数的正确和非阻塞方法是什么?



我需要反复调用一个函数来更新我的快速应用程序中一个路由中的数据库集合。我想了解正确的方法。我目前正在使用 setInterval((。

我尝试调用的函数本质上是异步的。我已经在我拥有的一条路线中尝试了以下实现。

var express = require('express');
var sampleRouter = express.Router();
....
const callFunction = () => {
// async function being called here
};
setInterval(callFunction, 30000);

目前,重复的函数调用未按照预期的时间间隔运行。我相信它以某种方式被阻止了。

从概念上讲,您在此处将setInterval()设置为每 5 分钟运行一次就可以了。这就是您安排在 node.js 中定期调用函数的方式。

我不能说当你这样做时你加载了多少数据库,但从概念上讲,这就是你每 5 分钟在节点服务器中执行一次函数的方式.js假设模块被加载并正确初始化。

请记住,node.js 单线程运行你的 Javascript,并且 Javascript 中的所有计时器都是非抢占式的,因此 node.js 中的所有计时器都是近似的。 当计时器触发时,它们将在事件队列中插入一个事件,一旦node.js完成它正在做的事情并获取下一个事件并且计时器事件已经冒泡到队列的顶部,那么你的计时器回调就会被调用。 除非你的服务器关闭了一些长时间运行的、阻塞的、同步的任务(哪个节点.js服务器不应该做任何方式(,否则这种模型的计时器通常非常适合大多数事情。 而且,在您进行一些数据库内务管理的情况下,它应该可以正常工作。

最新更新