【发布时间】:2020-08-29 01:42:42
【问题描述】:
某些 Node.js 模块(内置和其他)提供相同功能的同步和异步版本(通过回调或承诺)。例如,bcrypt 模块提供了bcrypt.hash(),它返回一个promise 并异步计算哈希值,或者bcrypt.hashSync() 直接返回一个哈希值。
但是,有时在异步操作完成之前工作无法继续,这就是 await 的用途。鉴于此,这两种代码 sn-ps 有什么区别,推荐使用哪一种?
const bcrypt = require('bcrypt');
// method 1
const hash1 = bcrypt.hashSync('password123', 10);
console.log(`hashed password: ${hash1}`);
// method 2
(async function() {
const hash2 = await bcrypt.hash('password123', 10);
console.log(`hashed password: ${hash2}`);
})();
第一个具有较少的绒毛(没有 async/await 关键字),并且鉴于我正在等待 bcrypt.hash() 的响应,我不知道这里的 async 是否有性能优势。我有什么遗漏吗?
【问题讨论】:
-
我认为这条评论回答了我的问题 - 解释了两种方法之间的区别以及为什么一种更好。因此,如果您将此作为答案发布,我可以将其标记为一个。我的意思是在其他代码也存在的上下文中,但我将示例缩减为所需的最少信息。
标签: javascript node.js async-await