如何在swift中使用async/await同时运行调用多个API?
How to run multiple API call simultaneously using async/await in swift?
根据 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
和userCardData
将在未来的某个时间点可用,就像一个承诺。
现在,为了使用 profileData 和 userCardData,我们需要使用 await,如果数据已获取并可用,它将立即 return,或者暂停直到数据可用。
上述请求的值可以像这样使用,
let (fetchedProfileData, fetchedUserCardData) = try await (profileData, userCardData)
根据 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
和userCardData
将在未来的某个时间点可用,就像一个承诺。
现在,为了使用 profileData 和 userCardData,我们需要使用 await,如果数据已获取并可用,它将立即 return,或者暂停直到数据可用。
上述请求的值可以像这样使用,
let (fetchedProfileData, fetchedUserCardData) = try await (profileData, userCardData)