异步函数返回promise而不是数组

时间:2020-09-25 11:19:02

标签: react-native async-await

我一直在寻找有关堆栈溢出的答案,但是到目前为止,什么都没有。 由于要在return()函数中显示其内容,因此我使用this function(下)检索一个简单的数组。

_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”]),但是我不知道如何在{{1}之外获取数组}函数。我尝试过将其返回(返回承诺)并将其放入全局变量中,然后返回它,但这也只返回了一个Promise对象。

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

1 个答案:

答案 0 :(得分: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中,您获取的数组的值将可用。

〜褪色