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

时间:2020-07-13 10:45:03

标签: javascript angular ionic5

我正在使用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;

我只得到我设置的默认值。我如何等待诺言返回之前完成?

1 个答案:

答案 0 :(得分:1)

如果您在方法中使用了Promise,并且想返回Promise的结果,那么您也应该保证方法的正确性。您可以通过两种方式实现这一点:

  1. 兑现诺言
  2. 或使用async-await

方法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