react-native - 异步函数返回承诺而不是数组
问题描述
我一直在寻找堆栈溢出的答案,但到目前为止没有任何效果。我正在使用这个函数(如下)来检索一个简单的数组,因为我想在 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()
函数之外获取数组。我试过返回它(返回一个承诺)以及将它放在一个全局变量中然后返回它,但这也只是返回一个承诺对象。
如何从此异步函数中提取填充的数组?
解决方案
您可以使用 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
您获取的数组的值将可用。
~褪色
推荐阅读
- javascript - 如何使用 GTM 自定义模板进行 dataLayer.push?
- facebook - 如何通过facebook每次登录选择帐户
- codeigniter - 登录注册并验证电子邮件(gmail)codeigniter
- python - 在numpy数组中查找特定序列的位置
- java - 如何在我们使用 springboot 的 Rest API 应用程序中将域或 IP 地址列入白名单?
- php - 当我将“公钥”发送到另一台服务器时,有一个反斜杠附加在字符串中的每个反斜杠上
- javascript - 三 JS SphereGeometry 纹理渲染不正确
- laravel - Laravel env 文件问题可写访问
- c# - 如何动态构建web api参数
- python - 模块“tensorflow”没有属性“GraphDef”