nodejs是否创建后台任务或子进程来执行回调函数

时间:2015-04-29 17:15:18

标签: node.js asynchronous callback background-process child-process

NodeJS是否创建后台任务或子进程来执行回调函数? NodeJS如何执行下面的查询?

MyModel.find({}, function (err, docs) {
  //Do some thing
});

2 个答案:

答案 0 :(得分:1)

已经回答了很多次......它并不是特定于Mongoose,几乎每个Javascript库都会这样做来处理异步调用。

请看看Philip Roberts的JSConf演讲:https://www.youtube.com/watch?v=8aGhZQkoFbQ

它很好地解释了实际发生的事情。

无论如何,Mongoose基本上做的是使用Node.js MongoDB Native driver查询MongoDB,等待响应并使用从本机驱动程序收到的errdoc结果执行回调函数。

简单来说,Mongoose只是本机驱动程序的包装器,可以让开发人员更轻松。

答案 1 :(得分:0)

NodeJs实现非阻塞i/o以在单线程中实现这些回调。它使用事件循环。

根据数据的需求,nodejs注册一个回调并将操作发送到此事件循环。当数据可用时,调用回调。

假设一个线程正在执行回调A.它继续执行,并说它找到了另一个异步任务。它为该异步任务注册新的回调B.同时等待B的数据,它开始执行其他一些回调C.一旦C完成。然后检查B的数据是否可用。如果是,则执行B.否则执行一些其他回调D ......依此类推..

阅读本文以深入理解http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/