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

如何在Swift中通过async/await同时发起多个API调用?

Swift 结构化并发多API并行调用实现方案

你当前的串行await写法会让接口请求按顺序执行,拖慢整体加载速度,用Swift结构化并发提供的两种方案都可以实现多请求并行发起:

方案1:async let(适合固定数量的少量并行任务)

这是你当前场景下最简洁的写法:

// 立刻并行启动两个异步任务,不会阻塞等待结果
async let profileData = viewModel.getProfileData()
async let userCardData = viewModel.getCardDetails()

// 需要使用结果时再await等待任务执行完成
let (loadedProfile, loadedCard) = await (profileData, userCardData)

注意事项

  • 用async let声明的任务会立刻开始执行,不需要额外调用触发
  • 如果接口请求有抛错逻辑,在await取值时添加try即可,错误会按结构化并发规则正常传播
  • 如果需要单独处理某个任务的错误,可以单独对单个async let变量做try await处理

方案2:TaskGroup(适合动态数量的并行任务)

如果你的并行请求数量不固定(比如需要遍历数组发起多个请求),可以用任务组实现:

// 假设两个接口返回值都是同类型,不同类型可以用枚举包装
let apiResults = await withTaskGroup(of: Any.self) { group in
    group.addTask { await viewModel.getProfileData() }
    group.addTask { await viewModel.getCardDetails() }
    // 支持动态添加任意数量的任务
    var results = [Any]()
    for await result in group {
        results.append(result)
    }
    return results
}

内容的提问来源于stack exchange,提问作者Let's_Create

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:06:04