0

我正在尝试编写一个 node.js 应用程序,我们需要在生产中部署它。

我们需要确保 node.js 在有任何长时间运行的进程/操作(如查询或数据库服务器访问)时不会挂起。

因此,我正在尝试调用 mongo 或文件系统,这需要很长时间才能完成,以便我可以验证其他 node.js 服务器在发生这种情况时是否可以免费服务任何其他请求。

可悲的是,我无法插入 mongo 需要很长时间才能完成或对文件系统进行同步调用的记录。

有人可以告诉我该怎么做吗?

谢谢

图科

4

1 回答 1

0

诀窍是在执行调用的块之后对数据进行控制台日志,如果在控制台中首先出现消息实际上是异步的,则在回调中使用 console.log

我使用 mongojs 作为 mongo 的驱动程序:

collection.find({}, function(err, res) {
    console.log("done")
});
console.log("sendign signal")

如果它是异步的,在控制台中:

sendign signal
done! 

现在对于链式行为,您可以制作类似的东西

dbChain = (function() {
  var chain = [], cursor = 0, busy = false;

  chainin = {
    push : function(aFn) {
      if(!busy) {
        chainin.reset();
        aFn();
        busy = true;
      } else {
        chain.push(aFn)
      }
    },

    next : function() {
      cursor++;
      if(chain[cursor]) {
        chain[cursor]();
      } else {
        chainin.reset();
      }

    },

    reset : function() {
      chain = [];
      cursor = 0;
      busy = false;
    }
  }

  return chainin;

})()

并且,在您必须执行的所有 db 调用中:

dbChain.push(...(a function ) ...)

在你所有的回调中

dbChain.next()
于 2012-12-31T01:09:43.090 回答