【问题标题】:async function returns promise instead of array异步函数返回承诺而不是数组
【发布时间】:2021-01-11 17:30:59
【问题描述】:

我一直在寻找有关堆栈溢出的答案,但到目前为止没有任何效果。 我正在使用this function(below) 来检索一个简单的数组,因为我想在 return() 函数中显示它的内容。

_retrieveData = async () => {
  try {
    const value = await AsyncStorage.getItem('FavouritesArray');
    if (value !== null) {
      // We have data!!
      console.log(value);
    }
  } catch (error) {
    // Error retrieving data
  }
};

代码确实有效,它记录了我想要的数组 (["Rose","Mojito"]) 但我不知道如何在_retrieveData() 函数之外获取数组.我尝试过返回它(返回一个承诺)以及将它放在一个全局变量中然后返回它,但这也只是返回一个承诺对象。

如何从这个异步函数中提取填充的数组?

【问题讨论】:

标签: react-native async-await


【解决方案1】:

您可以使用 AsyncStorage 像这样存储和检索您的数据:

  const storeData = async (key, value) => {
    try {
      await AsyncStorage.setItem(key, value); 
    } catch (error) {
      console.log(error);
    }
  };

  const getData = async key => {
    try {
      const data = await AsyncStorage.getItem(key);
      if (data !== null) {
        console.log(data);
        return data;
      }
    } catch (error) {
      console.log(error);
    }
  };

然后使用键名调用 getData,就像您将数组存储在任何您想要的位置一样,并将键设置为状态数组。

  await getData("yourarraykey") 
    .then((data) => data)
    .then((value) => this.setState({ yourarraystate: value }))
    .catch((err) => console.log("AsyncStorageErr: " + err));

this.state.yourarraystate 之后,您获取的数组的值将可用。

~褪色

【讨论】:

    猜你喜欢
    • 2018-12-22
    相关资源
    最近更新 更多