我有两个并行且独立的函数,名为
function a() ->Bool & function b() ->Bool
现在,如果此功能中的任何一个失败,我想显示警报框
注意:我不能将一个函数放入另一个函数中。这两个功能都需要大约 5 秒才能完成
尝试过的方法:在 a() 和 b() 内创建了两个名为
var aCompleted: Bool var bCompleted
的标志
&
func showAlert() {
if aCompleted && bCompleted {
// show UIAlertController....
}
我正在寻找更好的方法,请指导。
最简单的方法是使用调度组。
let dispatchGroup = DispatchGroup()
var aSuccess = false
var bSuccess = false
dispatchGroup.enter()
DispatchQueue.global().async {
aSuccess = self.a()
dispatchGroup.leave()
}
dispatchGroup.enter()
DispatchQueue.global().async {
bSuccess = self.b()
dispatchGroup.leave()
}
dispatchGroup.notify(queue: .main) {
if !aSuccess || !bSuccess {
self.showAlert()
}
}
.notify 函数仅在两个函数都执行完毕后才会被调用。