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

Vue3连续API调用问题:需等待两次请求完成后再渲染页面

解决Vue3中两次API调用完成后再渲染页面的问题

你的代码核心问题是混合使用await与.then导致异步流程失控:第一个API请求完成后,函数没有等待第二个API请求结束就继续执行,此时resultList.value还未被赋值,页面提前渲染就会抛出JS错误。

修正后的代码

async function getResults(OrderNum: string): Promise<void> {
  try {
    // 等待第一个API请求完成,获取筛选参数
    const response1 = await api.get(`/getFilters`);
    const resFilter = response1;

    // 以第一个API结果为参数,等待第二个API请求完成
    const response2 = await api.post(`/getResults/${OrderNum}`, resFilter);
    
    // 所有请求完成后,再赋值给响应式变量
    resultList.value = response2.sort(
      (a: any, b: any) => new Date(b.created) - new Date(a.created)
    );
  } catch (err) {
    console.log("inside getResults catch - no records !!" + err);
  }
}

关键说明

  1. 统一使用await处理异步请求,确保第一个API返回结果后才发起第二个API请求,且等待其完成后再执行后续逻辑。
  2. 只有当两次API请求都完成并处理好数据后,才给resultList.value赋值,页面渲染时数据已经准备就绪,不会因数据缺失报错。
  3. 额外建议:如果模板中依赖resultList渲染内容,可以添加v-if="resultList"或v-if="resultList.length"的判断,在数据未就绪时隐藏对应渲染区域,进一步避免潜在错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:37:19