我正在使用Ionic Framework的数据存储。在我的代码中,我有我的身份验证保护程序来检查是否存储了用户信息。代码是:
this.storage.get('user_info').then((data) => {
let user_info = JSON.parse(data);
if(user_info == null)
{
this._userIsLoggedIn = false;
} else {
this._userIsLoggedIn = user_info.isLogin;
}
});
return this._userIsLoggedIn;
我只得到我设置的默认值。我如何等待诺言返回之前完成?
答案 0 :(得分:1)
如果您在方法中使用了Promise,并且想返回Promise的结果,那么您也应该保证方法的正确性。您可以通过两种方式实现这一点:
方法1:
return new Promise( resolve => {
this.storage.get('user_info').then((data) => {
let user_info = JSON.parse(data);
if(user_info == null)
{
this._userIsLoggedIn = false;
} else {
this._userIsLoggedIn = user_info.isLogin;
}
return resolve(this._userIsLoggedIn);
});
});
方法2(哪个更干净):
const data = await this.storage.get('user_info');
let user_info = JSON.parse(data);
if(user_info == null)
{
this._userIsLoggedIn = false;
} else {
this._userIsLoggedIn = user_info.isLogin;
}
return this._userIsLoggedIn;
另外,请注意,您应该使用async
关键字修改函数才能使用await
。