首页 > 解决方案 > 无法从 AssyncStorage 检索数据

问题描述

我正在使用 AssyncStorage 包,@react-native-community/async-storage在检索存储的数据时遇到了一个大问题。

我不知道如何解析这些 Promise 结果。

有趣的事实是,如果我console.log(value)在 if 语句中,它会显示正确的文本,但它会返回 Promise。

这是我的功能:

const getData = async (key: string) => {
    try {
      const value = await AsyncStorage.getItem(key)

      if(value !== null) {
        return value
      }
    } catch(e) {
      TriggerAlert(I18n.t('error.readError') + e)
    }
  }

这就是我调用函数的方式

console.log(getData('@key'))

这是我得到的输出:

Promise {
  "_40": 0,
  "_55": null,
  "_65": 0,
  "_72": null,
}

标签: reactjsreact-nativeasyncstorage

解决方案


以下是正确的,您提取数据的方式:

const getData = async (key: string) => {
    try {
      const value = await AsyncStorage.getItem(key)

      if(value !== null) {
        return value
      }
    } catch(e) {
      TriggerAlert(I18n.t('error.readError') + e)
    }
  }

您唯一要更改的是函数调用位置,因为getData它是 async func ,它将返回 promise ,因此您希望等到 promise 解决或拒绝。

所以你可以通过,

let myFunction = async() => {

  console.log(await getData('@key'))
}

希望能帮助到你。随时怀疑


推荐阅读