You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:27:04