AsyncStorage.setItem Обещание не выполняется или ошибка? - PullRequest
0 голосов
/ 21 мая 2018

Я просмотрел несколько сообщений, таких как сообщение

Я хочу использовать console.log, чтобы узнать, успешно ли я установил элемент в AsyncStorage.

Вот мой код:

export function saveDeckTitleAPI(key,title) {
  return AsyncStorage.setItem(uuid(), JSON.stringify(new DeckCreator(title)))
    .then(data => {
      debugger;
      console.log('INSIDE SET ITEM');
      AsyncStorage.getItem(data.key).then(item => {
        console.log(item);
      })
    })
    .catch(err => {
      console.err(err);
    });

}

Когда я запускаю этот код, .then и .catch не выполняются.Я попытался зарегистрировать обещание самостоятельно, и я получил результат, аналогичный описанному выше.

Нужно ли использовать async / await?Это проблема здесь?Вот документы на setItem .

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Да, вам нужно async и await

Вы можете получить вдохновение из приведенного ниже кода, как я делаю вход в Facebook с setItem

const doFacebookLogin = async dispatch => {
  const { type, token } = await 
  Facebook.logInWithReadPermissionsAsync('xxxx', {
    permissions: ['public_profile']
  });

  if (type === 'cancel') {
    return dispatch({ type: FACEBOOK_LOGIN_FAIL });
  }

  await AsyncStorage.setItem('fb_token', token);
  dispatch({ type: FACEBOOK_LOGIN_SUCCESS, payload: token });

};

0 голосов
/ 22 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...