作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在从另一个文件成功调用 API 后返回一个对象
。但每次调用成功,但返回的对象是未定义
。让我把情况说清楚。
App.js
我从 App.js
调用 Auth.session()
,它会返回一个 Session()
对象。
try{
Auth.session(); #data123
console.log("data 123",Auth.session());
}catch (e) {
console.log(e);
}
Auth.js
export class Auth {
static session() {
if(token !=null){
return Session.getSession(); //DATA 456
//Here when return to App.js,is the outcome I want
}
if(refreshToken != null){
try{
await axiosAccessClient.post(url, body)
.then(function (response) {
//... do something else with the response.data
console.log(Session.getSession()); //here have the outcome I want
return Session.getSession(); // **DATA 678**
//but here when return to App.js,it become undefined
}).catch(function (error) {
throw error;
})
} catch (e) {
throw e
}
}else{
thorw "No session"
}
}
}
这是我的Session
类
export class Session {
constructor(access_token){
this.token= access_token;
}
static getSession(){
return new Session(
localStorage.getItem("access_token"),
)
}
}
所以我在 App.js
中,可以像这样获取 console.log
:
Session{access_token: .......} //Should return this in App.js
我可以从 if(token!= null)
(DATA 456) 部分得到上面的结果,但是在 try
block 中API 调用 (DATA 678 PART) 它在 App.js
中返回 UNDEFINED
。
所以我的问题是,API调用成功后如何返回一个对象?我尽力解决这个问题,我们将不胜感激。
最佳答案
当您想使用async
/await
时,不要使用then
。在 if (refreshToken != null)
block 中,您只是从 then
回调中return
ing,而不是从 Auth。 session
。使用
export class Auth {
static async session() {
if (token != null) {
return Session.getSession();
}
if (refreshToken != null) {
const response = await axiosAccessClient.post(url, body);
//... do something else with the response.data
return Session.getSession();
} else {
throw new Error("No session");
}
}
}
顺便说一下,don't make Auth
a class
if static session
is the only method .
关于javascript - 如何从 `try` block React 中成功的 API 调用返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502828/
我是一名优秀的程序员,十分优秀!