getItem 为啥返回 'Promise "_U": 0, "_V": 0, "_W": null, "_X": n
Posted
技术标签:
【中文标题】getItem 为啥返回 \'Promise "_U": 0, "_V": 0, "_W": null, "_X": null, \'【英文标题】:getItem why returned 'Promise "_U": 0, "_V": 0, "_W": null, "_X": null, 'getItem 为什么返回 'Promise "_U": 0, "_V": 0, "_W": null, "_X": null, ' 【发布时间】:2022-01-14 13:30:11 【问题描述】:我是新手反应原生,我正在使用异步和等待仍然为什么我得到这个错误
我的代码:
const getItemFromStorage = async () =>
try
await AsyncStorage.getItem('USER_NAME', (error: any, result: any) =>
if (result)
console.log(result);
else
console.log(JSON.stringfy(error));
);
catch (error)
console.log(error);
用法;
<Text style=styles.text>JSON.stringify(getItemFromStorage, null, 4)</Text>
结果;
"_U": 0,
"_V": 0,
"_W": null,
"_X": null
【问题讨论】:
看看这个,可能是同一个问题:***.com/questions/70286237/… 很遗憾这并没有解决我的问题,现在结果返回空白。 【参考方案1】:如果您存储了字符串化的 JSON,请尝试这样的操作;
getItemFromStorage = async () =>
try
const jsonValue = await AsyncStorage.getItem('USER_NAME');
let data = jsonValue != null ? JSON.parse(jsonValue) : null;
console.log(data);
如果你存储了一个简单的字符串,试试这个;
let username = '';
getItemFromStorage = async () =>
try
AsyncStorage.getItem('USER_NAME').then(result =>
console.log(result);
username = result;
)
catch(e)
// Handle error
您遇到的问题是没有解决返回的 Promise。这可能是如果您在进程完成之前 console.log (可能,所以请查看我发送的第二个代码库部分),否则您存储了一个对象(字符串化)并尝试将其作为字符串读取而没有先正确解析它。
编辑
<Text style=styles.amountFiat>this.username</Text>
【讨论】:
感谢您的帮助,但这产生了一个空结果。我将它与 android studio 一起使用。我没有使用 console.log 得到结果,所以我使用了 return。console.log(result);
而不是 return result;
,我也在尝试在页面上打印传入的值; <Text style=styles.text>getItemFromStorage</Text>
以上应该可以,真的。它几乎是我从事的一个项目的复制和粘贴,并且可以正常工作。你存的是什么,能不能展示一下setItem函数?
我只存储字符串值,而不是 json。我需要这个的价值。 await AsyncStorage.setItem('USER_NAME', username);
我是不是打错电话了? <Text style=styles.amountFiat>this.getAsyncData</Text>
好的 - 我在上面更新了我的答案。尝试将返回的用户名存储在一个变量中,全局创建这个变量,然后在你的 Text 组件中像上面一样更新它。
感谢回复,已解决。以上是关于getItem 为啥返回 'Promise "_U": 0, "_V": 0, "_W": null, "_X": n的主要内容,如果未能解决你的问题,请参考以下文章
为啥,如果 `$q.all` 没有返回一个 promise 数组,那么不会抛出异常?
为啥在使用promise时使用Q,bluebird框架? [复制]
为啥在使用 Promise 时在类方法中未定义“this”? [复制]