离子数据存储等待承诺完成
Ionic Data Storage wait for a promise to finish
我正在使用 Ionic Framework 的数据存储。在我的代码中,我有我的 auth guard 检查用户信息是否存储。代码是:
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;
我只得到我设置的默认值。我如何等待 promise 在它返回之前完成?
如果您在方法中使用承诺并希望 return 承诺的结果,您也应该承诺您的方法。您可以通过两种方式实现此目的:
- Return一个承诺
- 或者使用异步等待
Approach 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);
});
});
Approach 2 (Which is cleaner):
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
.
我正在使用 Ionic Framework 的数据存储。在我的代码中,我有我的 auth guard 检查用户信息是否存储。代码是:
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;
我只得到我设置的默认值。我如何等待 promise 在它返回之前完成?
如果您在方法中使用承诺并希望 return 承诺的结果,您也应该承诺您的方法。您可以通过两种方式实现此目的:
- Return一个承诺
- 或者使用异步等待
Approach 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);
});
});
Approach 2 (Which is cleaner):
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
.