Expo SecureStore返回对象而非字符串?如何提取纯TOKEN值
问题解答
1. Expo SecureStore是否会为字符串值返回对象?
不会。SecureStore.getItemAsync()本身返回的是字符串(存储的值)或null,你看到的带_A、_x等属性的对象,是未正确处理的Promise实例——因为调用的是异步函数,却没等待它执行完成。
2. 如何获取纯TOKEN字符串?
问题出在getValueFor的调用方式上:它是异步函数,直接调用会返回Promise对象而非最终结果,必须通过await或.then()来获取真实的TOKEN值。
正确调用示例
方式一:在async函数内使用await
// 必须在async函数中使用await async function fetchTokens() { const accessToken = await getValueFor("jwt_access"); const refreshToken = await getValueFor("jwt_refresh"); console.log(accessToken); // 空字符串或false console.log(refreshToken); // 纯TOKEN字符串或false } fetchTokens();
方式二:用.then()链式处理
getValueFor("jwt_refresh") .then(refreshToken => { console.log(refreshToken); // 纯TOKEN字符串或false }) .catch(err => { console.error(err); });
补充说明
你的getValueFor函数逻辑本身没问题:获取到值就返回字符串,否则返回false。但异步函数的特性是返回Promise,必须等待它resolve后才能拿到真实值——你之前直接调用得到的是Promise的内部状态对象,其中_z字段是resolve后的真实值,但直接读取_z是不规范的,正确做法是用await或.then()处理异步结果。
内容的提问来源于stack exchange,提问作者saviour israel
相关产品推荐
相关产品推荐

