0

根据 Swift 中新的结构化并发,我们可以等待在异步上下文中完成的 API 调用,但我想同时进行多个 API 调用,例如,目前如果一个接一个地添加 API 调用,

profileData = await viewModel.getProfileData()
userCardData = await viewModel.getCardDetails()

上述情况的问题是 CardDetails 仅在获取配置文件数据后才获取。

4

1 回答 1

4

可以使用async let. 这种特殊语法允许您将多个异步调用分组并一起等待它们,例如,

async let profileData = viewModel.getProfileData()
async let userCardData = viewModel.getCardDetails()

上面的声明表明profileDataanduserCardData将在未来的某个时间点可用,就像一个承诺一样。

现在为了使用 profileData 和 userCardData,我们需要使用 await,以防数据被获取并且可用,它会立即返回,或者暂停直到数据可用。

来自上述请求的值可以像这样使用,

let (fetchedProfileData, fetchedUserCardData) = try await (profileData, userCardData)
于 2021-11-30T16:01:31.717 回答