【问题标题】:AsyncStorage.setItem Promise not fulfilling or erroring?AsyncStorage.setItem Promise 未实现或出错?
【发布时间】:2018-10-31 13:14:41
【问题描述】:

我浏览过一些帖子,例如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 未实现。我尝试自己记录承诺,得到的结果与上面的帖子相似。

我必须使用异步/等待吗?这是这里的问题吗?这是setItem 的文档。

【问题讨论】:

  • 我有同样的问题,使用 async/await 并不能解决它。你找到解决办法了吗?

标签: javascript reactjs react-native promise


【解决方案1】:

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

【讨论】:

  • 我有同样的问题,这样做没有帮助。
【解决方案2】:

是的,您需要 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 });

};

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 2021-11-05
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    相关资源
    最近更新 更多