我正在尝试使用 ReactJS 和 AWS Cognito 制作一个项目。我正在使用 auth.js 文件夹中的所有身份验证功能。在登录屏幕中,我尝试从 auth.js 获取 session 信息,如下所示:
auth.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()
值完美传递。如果我找不到原因,我可能会这样使用 Promise。
最佳答案
- 等待的 promise 不会被返回。
- 因此,即使该值已解析,它也不会返回到回调。
- 在此处添加返回:
return await new Promise((resolve, reject) => {
关于javascript - ReactJS Promise resolve() 不会将值传递给 .then() ,而是reject() 将值传递给 .catch(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63587665/