首页 > 解决方案 > 异步函数返回承诺而不是数组

问题描述

我一直在寻找堆栈溢出的答案,但到目前为止没有任何效果。我正在使用这个函数(如下)来检索一个简单的数组,因为我想在 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-nativeasync-await

解决方案


您可以使用 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您获取的数组的值将可用。

~褪色


推荐阅读