Javascript 专业节点库如何实现异步执行?

Javascript 专业节点库如何实现异步执行?,javascript,node.js,multithreading,asynchronous,child-process,Javascript,Node.js,Multithreading,Asynchronous,Child Process,我花了一些时间研究了它们是如何实现以下异步执行的: bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) { // Store hash in your password DB. }); 他们正在使用异步回调执行计算开销大的任务(salt生成)。他们如何做到这一点而不阻塞主节点IO线程 我已经读过process.nextTick(),但它的运行方式似乎与setTimeout()类似,在setTimeout()中

我花了一些时间研究了它们是如何实现以下异步执行的:

bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) {
    // Store hash in your password DB.
});
他们正在使用异步回调执行计算开销大的任务(salt生成)。他们如何做到这一点而不阻塞主节点IO线程

我已经读过process.nextTick(),但它的运行方式似乎与setTimeout()类似,在setTimeout()中,您将CPU负载分配到一个线程上(延迟支付管道)。然后是childProcess.fork(),但我认为他们没有使用它,因为我在数据库中的任何地方都找不到它

此外,您还拥有诸如Monk之类的库,这些库可以实现:

users.find({ name: 'Loki' }, '-bigdata').then(function () {
    // exclude bigdata field
})
在本文档中的任何位置都没有出现fork()。我认为,为了让Monk卸载这种处理,需要一个明确的进程分叉,而不是某种递归异步回调


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

< P> <代码>节点.bLIPPT < /COD>使用绑定将编译的C++代码(参见)连接到异步节点函数。

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


另一方面,
monk
,依赖于,依赖于,它使用Node的
net
模块创建一个异步TCP客户端,与MongoDB服务器进程进行通信。

如果您了解更多关于Node内部工作的信息,我很想亲自了解更多!异步处理发生在哪里,是在C中还是在JS中?我相信它在节点运行时中。node.bcrypt使用助手库与V8进行接口。