JavaScript Node Js Event循环我自己的事件

时间:2014-03-22 11:57:34

标签: javascript node.js mongodb

我使用覆盆子pi从硬件读取数据并在服务器端设置内容。

我希望能够将自己的事件列表添加到Node JS事件循环中。例如,每20分钟我想发一个函数,所以我需要检查每个节点JS滴答,其中20分钟就到了。

我想我会在MongoDB中设置我自己的表,称为事件列表,或者在我的服务器端代码中的对象中创建一个表。

然后在初始化服务器时将此函数添加到Node JS事件循环:

function processEventQueue() {
   var eventQueue = events /* either database query or object in server side */;

   // check the values against each object to make sure if we've hit anything to action it.

   async.each(events, function (item) {
      // execute some action here
   });

   // could use a for loop because each event from the event queue aren't mutually exclusive
   // i.e can happen at the same time
}

我需要知道的事情:

  • 这会阻碍Node JS事件循环吗?
  • 举办活动的最佳地点在哪里?
  • 迭代事件的最佳方法是什么?

编辑======================================== ====

function processEventQueue() {
   // do some work here

   setImmediate(processEventQueue.bind(this));
}

此函数每次都会有效地调用自身,但是,在此循环中,它会尝试让它停止。其次经过仔细考虑后,事件队列中不应该有任何数据库调用,因为每个process.nextTick()发生得如此之快,以至于你最终可能会成为数据库的DoS ....这不是&#39好的。

processEventQueue中,如果另一个事件没有完成执行,则需要同时防止同时执行同一事件。

0 个答案:

没有答案