我花了一些时间研究Node Bcrypt以及他们如何实现以下异步执行:
bcrypt.hash(myPlaintextPassword, saltRounds, function(err, hash) {
// Store hash in your password DB.
});
他们正在使用异步回调执行计算密集型任务(盐生成)。他们如何在不阻塞主Node IO线程的情况下实现这一点?
我已经了解了process.nextTick(),但这似乎类似于setTimeout(),其中您正在将CPU负载分布在一个线程上(延迟付款)。然后还有childProcess.fork(),但我认为他们没有使用它,因为我在GitHub repo中找不到它。
此外,您还有像Monk这样的库,可以实现:
users.find({ name: 'Loki' }, '-bigdata').then(function () {
// exclude bigdata field
})
在这个代码库中没有任何fork()的出现。我认为为了让Monk卸载那种处理,需要明确的进程分叉而不是某种递归异步回调。
我正在尝试在我的应用程序中实现这种异步操作,但希望了解专业人士如何做到这一点。有人知道如何实现吗?