离子数据存储等待承诺完成

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 承诺的结果,您也应该承诺您的方法。您可以通过两种方式实现此目的:

  1. Return一个承诺
  2. 或者使用异步等待

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.