AsyncStorage.setItem承诺不满足或错误?

时间:2018-05-21 20:39:10

标签: javascript reactjs react-native promise

我查看了一些帖子,例如post

我想使用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 :(得分:0)

您可以将回调作为第三个参数传递。如果有错误,它将是回调的第一个参数。如果没有错误,控制台记录一切都很好,否则记录错误。

答案 1 :(得分:0)

是的,您需要asyncawait

您可以从下面的代码中获得灵感,我使用setItem进行Facebook登录的方式

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 });

};