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

Flutter中如何实现多异步请求并行执行?TTS API调用并行失效问题

问题原因

你用的Future.forEach本身就是串行执行的——它会先等待当前循环里的await _fetchAudioForText完成,才会进入下一轮循环调用下一个请求,所以根本没法实现并行。

解决方案

要实现并行,得先把所有请求的Future实例创建出来(这一步会立刻启动所有API请求),再用Future.wait()等待所有请求完成。

修改后的代码如下:

// 1. 创建所有请求的Future列表,此时所有TTS请求会立刻并行启动
final futures = rounds.map((round) => _fetchAudioForText(round, voiceA)).toList();

// 2. 等待所有并行请求完成
await Future.wait(futures);

// 3. 计算总字节数
totalBytes = rounds.fold(0, (sum, round) => sum + (round.audio?.lengthInBytes ?? 0));

原_fetchAudioForText方法无需修改,因为它本身是返回Future的异步方法,调用它但不立刻await时,请求就会马上发起。

额外说明
  • Future.wait()会等待所有Future都完成后才继续执行,还能获取所有请求的返回结果(如果需要的话)
  • 如果API有限流限制,可考虑分批次并行处理;若API允许,全量并行能最大化缩短总耗时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:55:22