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

TypeScript中await fetch执行后回调函数延迟触发问题排查

问题根因

你直接连续调用异步函数download时没有添加await等待执行完成,三个异步任务会并行启动:几乎同时发起三个fetch请求,待所有请求的Blob解析完成后才会依次触发C++侧回调,最终就出现了你观察到的错误输出顺序。

修复方案

如果要实现「下载url1→触发回调→下载url2→触发回调→下载url3→触发回调」的串行执行效果,用自执行async函数包裹调用逻辑,依次等待每个download执行完成即可:

async download(sUrl: string): Promise<void> {
    const fetRes:Response = await fetch(sUrl, {method: eHttpMethod.GET})
    const BlobRes:Blob = await fetRes.blob()
    // 调用C++侧回调
    this.CALLBACK(WEBSOCKET,  readyStage,'iDOINVOKE');
}

// 串行执行调用逻辑
(async () => {
  await download("url1");
  await download("url2");
  await download("url3");
})();

如果你的业务场景允许三个请求并行发起、但要求回调严格按url1、url2、url3的顺序触发,可以用Promise.all收集所有请求结果后再依次执行回调。


内容的提问来源于stack exchange,提问作者Hani Gotc Reinstate Monica

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:18:04