根据 Swift 中新的结构化并发,我们可以等待在异步上下文中完成的 API 调用,但我想同时进行多个 API 调用,例如,目前如果一个接一个地添加 API 调用,
profileData = await viewModel.getProfileData()
userCardData = await viewModel.getCardDetails()
上述情况的问题是 CardDetails 仅在获取配置文件数据后才获取。
根据 Swift 中新的结构化并发,我们可以等待在异步上下文中完成的 API 调用,但我想同时进行多个 API 调用,例如,目前如果一个接一个地添加 API 调用,
profileData = await viewModel.getProfileData()
userCardData = await viewModel.getCardDetails()
上述情况的问题是 CardDetails 仅在获取配置文件数据后才获取。
可以使用async let
. 这种特殊语法允许您将多个异步调用分组并一起等待它们,例如,
async let profileData = viewModel.getProfileData()
async let userCardData = viewModel.getCardDetails()
上面的声明表明profileData
anduserCardData
将在未来的某个时间点可用,就像一个承诺一样。
现在为了使用 profileData 和 userCardData,我们需要使用 await,以防数据被获取并且可用,它会立即返回,或者暂停直到数据可用。
来自上述请求的值可以像这样使用,
let (fetchedProfileData, fetchedUserCardData) = try await (profileData, userCardData)