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

Does nodejs create background task or child process to execute callback function

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

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

这个问题已经回答了很多次了...这不是 Mongoose 特有的,几乎每个 Javascript 库都这样做来处理异步调用。

看看 Philip Roberts 在 JSConf 上的这个演示文稿:https://www.youtube.com/watch?v=8aGhZQkoFbQ

它很好地解释了引擎盖下实际发生的事情。

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

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

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/