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

如何将类实例化移入subscribe函数 避免短暂展示错误数据

方案1:将Token实例化完全移入subscribe回调(推荐,从根源避免空白实例渲染)

该方案完全不会生成临时空白实例,直接解决页面短暂展示错误数据的问题,修改后代码如下:

{
  // 先缓存当前索引,避免异步回调执行时全局i已被修改导致索引错乱
  const currentIndex = this.i;
  this.tokenService.generate().subscribe((data: Token) => {
    // 回调内完成完整的Token实例化,所有参数一次性传入
    const newToken = new Token({
      id: currentIndex,
      copied: false,
      access_token: data.access_token,
      expiration: data.expiration,
      // 若需要user_id属性也可在此处补充对应取值逻辑传入
    });
    this.tokens.push(newToken);
    this.i++;
  });
}

方案2:改造Token类支持全参数构造,一次性完成实例初始化

如果你需要先做列表占位,也可以调整Token类的构造函数,支持传入全部属性完成初始化,避免实例化后再二次覆盖属性的操作,Token类改造示例:

class Token {
  id: number;
  copied: boolean;
  access_token: string;
  expiration: number;
  // 其他自定义属性在此处补充声明

  constructor(params: Partial<Token> & {id: number}) {
    this.id = params.id;
    this.copied = params.copied ?? false;
    this.access_token = params.access_token ?? '';
    this.expiration = params.expiration ?? 0;
    // 其他属性的赋值逻辑在此处补充
  }
}

改造后即可在subscribe回调中生成全属性的Token实例再存入数组,不会产生临时空白数据。


可选体验优化

如果需要展示请求中的加载状态,可以在发起请求时先往tokens数组中插入带loading: true标记的占位对象,页面根据loading字段渲染加载动画,接口返回后再替换为真实Token实例即可。

内容的提问来源于stack exchange,提问作者Paul Soetaert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 19:00:00