bcrypt.compare-“等待”对此表达的类型没有影响

问题描述 投票:0回答:2

UserSchema.methods.comparePasswords = async function (canditatePassword) { const isMatching = await bcrypt.compare(canditatePassword, this.password) return isMatching }

基于文档:

同步将给定数据与给定的哈希
进行比较

但VScode强调了
await

关键字并显示警告:

'AWAIT'对此表达的类型没有影响

表示,当我应用快速修复并删除

await
关键字时,一切仍然可以正常工作。谁能解释我,为什么这里不需要

await

首先,要做的就是等待a返回值,以便可以进一步传递,如果我们不使用

await
当您执行时,它将显示
promise

中,它已经返回承诺,因此,如果您只是直接返回结果,则不必要。 我希望现在很清楚:)
node.js async-await bcrypt
2个回答
0
投票

这里有两件事在这里发挥作用:
vs代码警告:当功能返回一个不是承诺的值时,预计会有此警告,但是在您的情况下,
多s e返回了诺言。但是,
await
有两个签名。当您提供第三个参数(回调)时,该函数不会返回承诺,并且保留了警告。我想VS代码无法检测到此细微差别。

为什么它也没有使用
<Promise Pending>

:如果您不使用

bcrypt.compare()

,那么

0
投票
是一个承诺而不是布尔人。该承诺被归还。这意味着

await

函数返回的承诺通过承诺
    await
  1. 解决(它已锁定在其上)。反过来,这意味着

    isMatching函数返回的承诺解答为感兴趣的布尔值,这也是当使用async

    时的结果。
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.