Ioni c Data Storage дождитесь завершения обещания - PullRequest
0 голосов
/ 13 июля 2020

Я использую хранилище данных от Ioni c 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;

Я получаю только значение по умолчанию, которое я установил. Как мне дождаться завершения sh обещания, прежде чем оно вернется?

1 Ответ

1 голос
/ 13 июля 2020

Если вы используете обещания в методе и хотите вернуть результат обещания, вам следует также обещать свой метод. Вы можете добиться этого двумя способами:

  1. Вернуть обещание
  2. Или использовать asyn c -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.

...