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

Flutter如何等待多个并发API全部返回后再执行后续UI更新代码

问题说明

现有函数包含4个API调用逻辑:

getDefects();
getInstruction();
getToDone();
getToInvoice();

要求为:

  • 4个API请求同时发起,不需要按顺序逐个等待响应返回
  • 必须等4个API的响应全部返回后,才执行后续UI更新逻辑
    UI更新代码如下:
status.success();
update(['all']);

当前编写的getData异步函数存在逻辑问题,不会等待所有API返回就直接执行UI更新,错误代码如下:

getData() async {
 status.loading();

try {
  getDefects();
  getInstruction();
  getToDone();
  getToInvoice();
  
  status.success();
  update(['all']);

  } catch (e) {
  status.error(e.toString());
}
}
解决方案

直接使用Dart内置的Future.wait方法即可实现需求,该方法会并发执行所有传入的异步任务,待所有任务全部执行完成后才会进入后续逻辑,修正后的代码如下:

getData() async {
  status.loading();
  try {
    await Future.wait([
      getDefects(),
      getInstruction(),
      getToDone(),
      getToInvoice(),
    ]);
    
    status.success();
    update(['all']);
  } catch (e) {
    status.error(e.toString());
  }
}

注意事项

  • 该写法下4个请求为并发执行,接口总耗时为所有请求中最长的单请求耗时,不会出现顺序等待的耗时累加问题
  • 任意一个API请求抛出异常时,都会直接进入catch分支执行错误状态更新逻辑
  • 不要给单个API调用单独添加await关键字,否则会退化为顺序执行,失去并发效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:24:22