[英]react native how to get return from a promise
我的问题是我想从这个函数得到一个json,但我得到的只是一个承诺,为什么我选择这种方式,因为在我正在努力的应用程序它动态地工作,但我看到的唯一的地方我可以把这个承诺是渲染()
这是我的代码:
var userInfo = (async()=>{
var value = await AsyncStorage.getItem("@user_info");
value = JSON.parse(value);
return value ;
})();
这是我的结果:
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
但我想得到的是一个json我该怎么办?
您必须从componentDidMount
调用此函数,并在promise完成后调用setState
。
这是一个如何执行此操作的规范示例:
class User extends React.Component {
state = { user: null };
render() {
return this.state.user && <div>{this.state.user.name}</div>;
}
async componentDidMount() {
const value = await AsyncStorage.getItem("@user_info");
if (!this._unmounted) {
const user = JSON.parse(value);
this.setState({ user: user });
}
}
componentWillUnmount() {
this._unmounted = true;
}
}
我认为这是因为你的功能是自动执行的。
如果删除自执行,则应该能够访问该值
var userInfo = async () => {
var value = await AsyncStorage.getItem("@user_info");
value = JSON.parse(value);
return value ;
});
由于AsyncStore.getItem
是一个Promise,你也可以使用.then
方法
const userInfo = () => {
AsyncStorage.getItem("@user_info").then((response) => {
console.log(response);
});
}
你应该返回value.json()。 尝试这个
var userInfo = (async()=>{
var value = await AsyncStorage.getItem("@user_info");
return value.json() ;
})();
另外,AsyncStorage.getItem是一个异步函数,如果在进程中发生任何错误,你需要在try和catch中包装它
注意 :如果在未使用async显式声明的函数内使用await,则最终会出现意外的令牌语法错误。
async userInfo(){
try{
var value = await AsyncStorage.getItem("@user_info");
return value.json() ;
}
catch(e){
console.log('caught error', e);
// Handle exceptions
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.