UserSchema.methods.comparePasswords = async function (canditatePassword) {
const isMatching = await bcrypt.compare(canditatePassword, this.password)
return isMatching
}
基于文档:
同步将给定数据与给定的哈希进行比较
但VScode强调了
await
关键字并显示警告:
'AWAIT'对此表达的类型没有影响
表示,当我应用快速修复并删除await
关键字时,一切仍然可以正常工作。谁能解释我,为什么这里不需要?
await
首先,要做的就是等待a返回值,以便可以进一步传递,如果我们不使用
await
当您执行时,它将显示promise
它
中,它已经返回承诺,因此,如果您只是直接返回结果,则不必要。
我希望现在很清楚:)
这里有两件事在这里发挥作用:
vs代码警告:当功能返回一个不是承诺的值时,预计会有此警告,但是在您的情况下,多s e返回了诺言。但是,
await
有两个签名。当您提供第三个参数(回调)时,该函数不会返回承诺,并且保留了警告。我想VS代码无法检测到此细微差别。
为什么它也没有使用
<Promise Pending>
:如果您不使用bcrypt.compare()
await
await
isMatching
函数返回的承诺解答为感兴趣的布尔值,这也是当使用async
时的结果。