gpt4 book ai didi

javascript - ReactJS Promise resolve() 不会将值传递给 .then() 而是 reject() 将值传递给 .catch()

转载 作者:行者123 更新时间:2023-12-04 09:00:26 25 4
gpt4 key购买 nike

我正在尝试使用 ReactJS 和 AWS Cognito 制作一个项目。我正在使用 auth.js 文件夹中的所有 auth 函数。在登录屏幕中,我试图从 auth.js 获取 session 信息,如下所示:
认证.js

var getSessionInfo = async () => {
await new Promise((resolve, reject) => {
const user = Pool.getCurrentUser();
if (user) {
user.getSession((err, session) => {
if(err){
reject(err)
}else{
resolve(session)
}
})
} else {
reject()
}
})
}
并在 login.js 中
getSessionInfo()
.then(session => {
console.log("session:", session)
setIsAuth(true)

if (isAuth) {
history.push("/home")
}
})
.catch(err => {
console.log("err:", err)
})
在 login.js 中, .then(session => {...})此 session 始终未定义。无论我在里面写什么,都没有解析返回值。
但有趣的是,如果我使用 reject()而不是 resolve()并使用 .catch()而不是 .then()值完美通过。如果我找不到原因,我可能会以这种方式使用 Promises。

最佳答案

  • promise 等待是 不被退回 .
  • 因此,即使该值已解析,它也不会返回到回调。
  • 添加 返回 这里:
  • return await new Promise((resolve, reject) => {

    关于javascript - ReactJS Promise resolve() 不会将值传递给 .then() 而是 reject() 将值传递给 .catch(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63587665/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com