Ionic Capacitor Storage的get方法运行异常,访问未赋值key引发无限循环
问题根因
你的代码本身存在两处语法逻辑错误,是触发问题的核心原因:
getToken是异步函数但没有显式返回值,调用时永远返回undefined,如果业务逻辑中存在「token不存在就重复调用取值」的逻辑,会直接进入无限循环;同时你混用了async/await和.then链式调用,写法不规范导致返回值完全不符合预期。setToken的返回类型声明和实际返回值不匹配,你声明返回Promise<void>,但实际执行完set操作后调用了getToken(),会返回Promise<string | null>,运行时可能触发未捕获的类型异常,加剧卡死问题。
修复方案
修正后的存取方法如下:
// 读取token,不存在时返回null public async getToken(): Promise<string | null> { const result = await Storage.get({ key: 'token' }); return result.value; } // 写入token public async setToken(token: string): Promise<void> { await Storage.set({ key: 'token', value: token }); }
额外排查建议
如果修正方法后仍有循环问题,可检查调用getToken的上层逻辑:
- 是否存在token不存在时的轮询重试逻辑,没有设置最大重试次数或退出条件
- 如果在前端框架的渲染函数、计算属性、响应式副作用中调用
getToken,空值可能会触发重复的响应式更新,形成循环调用
内容的提问来源于stack exchange,提问作者HelpIsNeeded
相关产品推荐
相关产品推荐

