【发布时间】:2021-05-19 19:15:48
【问题描述】:
我有一个简单的项目计算器应用程序。这些项目使用异步存储进行存储。因此我创建了以下类 itemStorage.js
import { AsyncStorage } from 'react-native';
export const saveItem = (item) => {
AsyncStorage.setItem(item.name, JSON.stringify(item));
}
export const getAllItems = async () => {
const result = [];
try {
await AsyncStorage.getAllKeys().then(async keys => {
await AsyncStorage.multiGet(keys).then(key => {
key.forEach(data => {
console.log(data)
result.push(data)//values
});
return result;
});
});
} catch (error) {
console.log('Error loading settings', error);
}
}
保存项目有效。当我在 getAllItems 函数中调用 console.log(data) 时,我也可以在控制台中看到项目。
不起作用的是在其他组件中使用此功能。我有一个名为 calculator.js 的组件并具有以下代码:
callbackFunction = async (childData) => {
const myItems = await getAllItems().then(item => {
console.log("items " + item);
});
但“项目”总是未定义的。而且我不知道是什么导致了这种行为。
【问题讨论】:
-
不要混合使用
await和.then,这只会让事情变得更混乱,而不是需要。由于这种混合,您实际上并没有从您期望的功能中返回。我建议只使用await/async并删除.thens
标签: javascript reactjs react-native