【问题标题】:How to run multiple API call simultaneously using async/await in swift?如何在 swift 中使用 async/await 同时运行多个 API 调用?
【发布时间】:2022-01-07 08:17:29
【问题描述】:
根据 Swift 中新的结构化并发,我们可以等待在异步上下文中完成的 API 调用,
但我想同时进行多个 API 调用,
比如目前如果一个接一个地添加API调用,
profileData = await viewModel.getProfileData()
userCardData = await viewModel.getCardDetails()
上述情况的问题是 CardDetails 是在获取 profile 数据后才获取的。
【问题讨论】:
标签:
ios
swift
async-await
swift5.5
【解决方案1】:
可以使用async let 来实现。
这种特殊语法允许您将多个异步调用分组并一起等待它们,
例如,
async let profileData = viewModel.getProfileData()
async let userCardData = viewModel.getCardDetails()
上述声明表明profileData 和userCardData 将在未来某个时间点可用,就像一个承诺一样。
现在为了使用 profileData 和 userCardData,我们需要使用 await,以防数据被获取并且可用,它会立即返回,或者它暂停直到数据可用。
上述请求中的值可以像这样使用,
let (fetchedProfileData, fetchedUserCardData) = try await (profileData, userCardData)