我想在同一个屏幕上调用多个API,但是当一个API失败时,不应该调用其他API吗?下面的代码工作正常。但我需要的是,如何以更简单的方式重构它?
ApplicationService.requestAppEndPointUrl { success, error in
if success {
ApplicationService.appLinkDownload { success, error in
if success{
ApplicationService.requestApplicationSession { success, error in
if success {
ApplicationService.validateSdk { success, error in
if success {
ApplicationService.requestApplicationDetails { success, error in
if success{
print("Success")
}
else{
self.showErrorAlert(error)
}
}
}else{
self.showErrorAlert(error)
}
}
}else{
self.showErrorAlert(error)
}
}
}else{
self.showErrorAlert(error)
}
}
}else{
self.showErrorAlert(error)
}
}
最佳答案
如果 ApplicationService
是可以修改的类/结构,则可以将带有完成处理程序的同步函数调用转换为异步函数调用,使用Swift 5.5 concurrency 。代码如下所示:
do {
try await ApplicationService.requestAppEndPointUrl()
try await ApplicationService.appLinkDownload()
try await ApplicationService.requestApplicationSession()
try await ApplicationService.validateSdk()
try await ApplicationService.requestApplicationDetails()
} catch {
self.showErrorAlert(error)
}
然后,第一个错误将破坏调用链,将被咳嗽并显示。
如果您必须使用同步 ApplicationService
函数,您可以使用异步包装器将它们转换为异步函数,如上面引用的链接所示。
关于ios - 如何在之前Api成功的基础上调用多个Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70676635/