React Native中AsyncStorage.setItem()无法正常工作求助
问题排查与解决
问题原因
AsyncStorage.getItem()是异步方法,返回的是一个Promise对象。你直接打印这个Promise时,输出的是它的内部状态结构(就是你看到的{"_h": 0, "_i": 0, "_j": null, "_k": null}),而不是实际存储的token值。
修复代码
修改parseResolvedData函数,在调用AsyncStorage.getItem()时加上await,确保等待Promise解析完成后再打印结果:
// Takes the resolved promise from LOGIN const parseResolvedData = async (userObj) => { setFailedLogin(false) setFailedSignup(false) await setTokenAsyncAndRegular(userObj.loginUser.token) // 加上await等待Promise解析 const storedToken = await AsyncStorage.getItem('@token') console.log("Async says...", storedToken) }
也可以用.then()的方式处理异步结果:
const parseResolvedData = async (userObj) => { setFailedLogin(false) setFailedSignup(false) await setTokenAsyncAndRegular(userObj.loginUser.token) AsyncStorage.getItem('@token').then(storedToken => { console.log("Async says...", storedToken) }) }
验证说明
修改后,控制台会正确打印出存储的token值,而不是Promise的状态对象。await会暂停函数执行,直到Promise完成并返回结果;.then()则会在Promise解析后触发回调处理结果。
内容的提问来源于stack exchange,提问作者user18899735
相关产品推荐
相关产品推荐

