专业的Node库如何实现asynchronous执行?

我花了一些时间查看Node Bcrypt ,以及它们如何实现以下asynchronous执行:

bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) { // Store hash in your password DB. }); 

他们使用asynchronouscallback执行计算量大的任务(盐生成)。 他们如何做到这一点,而不阻塞主节点IO线程?

我已经阅读了process.nextTick(),但是这似乎与在一个线程中分配CPU负载的setTimeout()类似(延迟了piper的支付)。 然后有childProcess.fork(),但我不认为他们正在使用,因为我无法在GitHub仓库的任何地方find它。

另外,你还有像Monk这样的库,可以实现:

 users.find({ name: 'Loki' }, '-bigdata').then(function () { // exclude bigdata field }) 

在这个回购中任何地方都没有fork()出现。 我想为了Monk卸载这种处理将需要一个明确的stream程叉与某种recursion的asynchronouscallback。

我试图在我的应用程序中实现这种asynchronous操作,但想了解专业人员如何做到这一点。 有谁知道要做到这一点?

node.bcrypt使用Node-GYP绑定将已编译的C ++代码(请参阅/ src /目录 )连接到asynchronousNode函数。

所以我相信,当调用.hash函数时,Node运行时将包括预编译的二进制可执行文件中定义的函数,并运行另一个线程上需要的任何计算。

另一方面, monk取决于mongodb (NPM) (GitHub) ,它依赖于mongodb-core (NPM) (GitHub) ,它使用Node的net模块创build一个asynchronousTCP客户端来与MongoDB服务器进程通信。