等待bcrypt.hash()与bcrypt.hashSync()相同吗?

时间:2018-06-08 07:31:57

标签: node.js multithreading asynchronous async-await bcrypt

关于bcrypt npm package,我看到建议使用异步版本。但是,我想真正理解两个版本在性能方面的差异(即事件循环,阻塞I / O等)

版本1:异步

const hash = await bcrypt.hash(...)
...

版本2:同步

const hash = bcrypt.hashSync(...)
...

换句话说,如果我用bcrypt.hash呼叫await,效果是否等同于同步版本?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我不知道bcrypt究竟是如何实现它的,但如果推荐它并且它确实是完全异步的,那就意味着它们在不同的线程中执行它并且它不会阻塞主线程。

在Node.js中,事件循环和你编写的所有代码都在一个线程中 - 一旦你开始做某事,同步部分必须首先完全执行,这意味着其他一切都被阻止了。 你不想阻止你的REST API进行响应,对吗?每个毫秒计数。

答案 2 :(得分:0)

您可以使用bcrypt.hash()使其异步,如下所示:

bcrypt.hash(password,saltRounds).then(hash)=>{

//run whatever you want here once the operation has completed, such as creating your user
}