如何在 swift 中使用 async/await 同时运行多个 API 调用?

Let*_*ate 7 ios async-await swift swift5

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

profileData = await viewModel.getProfileData()
userCardData = await viewModel.getCardDetails()
Run Code Online (Sandbox Code Playgroud)

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

Let*_*ate 16

它可以使用 来实现async let。这种特殊的语法允许您将多个异步调用分组并等待它们,例如,

async let profileData = viewModel.getProfileData()
async let userCardData = viewModel.getCardDetails()
Run Code Online (Sandbox Code Playgroud)

上述声明表明,profileDatauserCardData,将在未来的某个时间可用,就像一个承诺。

现在为了使用 profileData 和 userCardData,我们需要使用等待,如果数据被获取并且可用,它将立即返回,或者挂起直到数据可用。

上述请求中的值可以像这样使用:

let (fetchedProfileData, fetchedUserCardData) = try await (profileData, userCardData)
Run Code Online (Sandbox Code Playgroud)