await 函数没有等待异步匿名函数

哈里安夏

我尝试使用 await 使我的异步函数像同步任务一样工作,它适用于常规函数。但这对我的匿名函数不起作用。

所以我的猫鼬模式中有这个功能:

userSchema.methods.comparePassword = function comparePassword(candidatePassword, cb) {
  bcrypt.compare(candidatePassword, this.password, (err, isMatch) => {
    cb(err, isMatch);
  });
};

我试图使用bcrypt.compare来验证我的散列密码,这要求我使用匿名函数来获取结果。

所以我尝试使用这个函数比较密码:

async (email, password, h) => {
    const user = await User.findOne({email: email, isDeleted: false})
    if (!user) {
        const data = ResponseMessage.error(400, User Not Found')
        return h.response(data).code(400)
    }
    await user.comparePassword(password, (err, isMatch) => {
        if (isMatch) {
            console.log('TRUE')
            return h.response('TRUE')
        } else if (!isMatch) {
            console.log('FALSE')
            return h.response('FALSE')
        }
    })
    console.log('END OF FUNCTION')
    return h.response('DEFAULT')
}

附件:

回应

控制台

我试图运行服务器并比较密码,但它给了我默认的结果。我尝试使用控制台进行调试,然后它显示TRUE/FALSEEND OF FUNCTION之后显示所以它证明我的函数运行良好,但我的 await 函数没有等待我的任务运行另一行。

对我的这个有帮助吗?

filipemelo032

尝试将其分配给 Promise,如下所示:

userSchema.methods.comparePassword = async (candidatePassword, cb) => {
await new Promise ((resolve, reject)=>{
 bcrypt.compare(candidatePassword, this.password, (err, isMatch) => {
    resolve(cb(err, isMatch));
  });

})
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

异步函数不等待 await

如何确保Lambda函数通过await等待调用异步函数?

即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

React async / await没有在调用函数中等待-但是被调用函数正在正确执行

AWAIT Promise.all没有等待,尽管异步包装

Javascript 函数 await 仅在异步函数中有效

在异步函数外使用await

如果我在非异步函数中调用 `AsyncStorage.setItem` 而没有 await 会发生什么?

Lint警告,用于在没有TypeScript的情况下调用不带.then()或await的异步函数

异步函数没有等待

for循环中的“ await仅在异步函数中有效”

For 循环 - SyntaxError: await 仅在异步函数中有效

给出 await 的异步函数仅在异步函数中有效

“await 仅在异步函数中有效”,而它是一个异步函数

函数不等待 addListener 上的 async/await?

在非异步函数中使用“ await”

如何通过异步函数响应执行 If await

await 总是抛出 SyntaxError: await 仅在 sequelize 的异步函数中有效

ASYNC / AWAIT SyntaxError:await 仅在异步函数和模块的顶级主体中有效

React – Async / Await 似乎没有等待

Google Cloud / Firebase 函数:await 仅在异步函数中有效

为什么我的 await 在我的功能中不起作用?“语法错误:等待仅在异步函数中有效”

SyntaxError:await 仅在带有 Apify Metamorph 的异步函数中有效

如何使代码在以下 async/await 函数中等待?

ReactNative:Await/Async 函数在继续之前等待结果

async/await:在返回函数结果之前等待循环结束

在 Vuejs 中使用 async-await 等待函数内的赋值

如何在 for 循环中添加 await 以等待函数调用?

await 仅在异步函数 discord.js 中有效