我在尝试从 React Native 中的 AsyncStorage 获取项目而不将其转换为异步函数并使用等待时遇到一些麻烦。
基于这个答案,我试图做这样的事情:
const getItem = (key) => {
AsyncStorage.getItem("access_token").then(value=>{
console.log(value, " first")
return value
});
};
const test = () => {
const teste = getItem()
console.log(teste, " final");
}
最疯狂的部分是当调用测试函数时(例如,在 onPress 事件上),我会打印以下内容:
LOG undefined final
LOG 00b3ceb97ae8d9357abd1065f50be408a9389f23 first
最终的日志,应该显示在最后,首先打印,并且是未定义的。
我在这里遗漏了什么吗?是否可以使用“then”通过 AsyncStorage lib 获取数据而无需异步等待机制?
“react-native”:“0.73.6”和“@react-native-async-storage/async-storage”:“^1.23.1”,
在你的情况下,我建议从
getItem
返回 Promise 并在之后使用 then
:
const getItem = (key) => {
return AsyncStorage.getItem("access_token").then(value => {
console.log(value, " first");
return value
});
};
const test = () => {
getItem().then((value) => console.log(value, " final"));
}