Node.js异步循环到查询数据库

时间:2013-12-11 00:19:19

标签: node.js

我是node.js的新手。

我正在建立一个循环,每隔3秒用聊天消息查询数据库,然后向所需用户发送所需的新消息。

这是我的循环 - 但目前只循环一次:

  // New Database Chat Messages Send
  var newDBMessagesInterval = 3000;     // 3 Seconds
  (function newDBMessagesSchedule() {
    setTimeout(function() {
      async(function() {
        console.log('async is done!');
        newDBMessagesSchedule();
      });
    }, newDBMessagesInterval)
  })();





function async() {
  console.log('in async function....');
}

我是否需要从异步函数返回一些内容才能继续循环?

这也是做循环的好/坏方法 - 我的目的是将DB SELECT放入异步函数中,而不是DB调用重叠的内容。

这也是非阻塞的吗?

THX

1 个答案:

答案 0 :(得分:4)

关于异步函数没有什么神奇之处。您必须在某个时刻将回调调用到异步函数。出于测试目的,您应将async更改为:

function async(callback) {
  callback();
}

是的,这是非阻塞的。

但是,从你的评论中,我看到你这样做是为了向套接字发送消息。这不是一个很好的方法。您应该考虑获得一个“发布/订阅”系统,并让每个服务器订阅并发布自己的消息。 Redis是一个很好的选择。