我使用覆盆子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
}
我需要知道的事情:
编辑======================================== ==== 的
function processEventQueue() {
// do some work here
setImmediate(processEventQueue.bind(this));
}
此函数每次都会有效地调用自身,但是,在此循环中,它会尝试让它停止。其次经过仔细考虑后,事件队列中不应该有任何数据库调用,因为每个process.nextTick()
发生得如此之快,以至于你最终可能会成为数据库的DoS ....这不是&#39好的。
在processEventQueue
中,如果另一个事件没有完成执行,则需要同时防止同时执行同一事件。