【发布时间】:2021-07-04 23:22:03
【问题描述】:
我在 completeOnboarding 方法中有两个方法,它们都有网络操作,应该在后台线程中完成,如下所示。但是,我想知道我是否在做为什么首先调用completion(true),我该如何处理这个问题?
DispatchQueue.global(qos: .background).async {
self?.completeOnboarding( completion: { (success) in
DispatchQueue.main.async {
if success {
print("success")
} else {
print("failed")
}
}
})
func completeOnboarding(completion: @escaping(Bool) -> Void){
// has network post operation
classRegistration() {(success) in
if !success {
completion(false)
return
}
}
// has network post operation
classLocation() { (success) in
if !success {
completion(false)
return
}
}
completion(true)
}
【问题讨论】:
-
想必
classRegistration和classLocation是异步方法,所以马上就返回了 -
是的,这些是异步方法。这两种方法都在对服务进行网络调用。
标签: ios swift multithreading