0
我有一個包含2組異步函數的項目,它們應該按順序執行。在執行完所有異步函數之後,我試圖運行function3
。在Swift中使用dispatchGroup處理一系列異步函數時出錯
這裏是我的代碼高層結構:
class VC: UIViewController {
let dispatchGroup = DispatchGroup()
let dispatchGroup2 = DispatchGroup()
override func viewDidLoad() {
asyncFunc1()
dispatchGroup.notify(queue: .main) {
asyncFunc2()
}
dispatchGroup2.notify(queue: .main) {
print("all done")
function3()
}
}
func asyncFunc1() {
for item in itemArray {
dispatchGroup.enter()
Alamofire.request(urlString).responseString { response in
dispatchGroup.leave()
}
}
}
func asyncFunc2() {
for item in itemArray2 {
dispatchGroup2.enter()
Alamofire.request(urlString).responseString { response in
dispatchGroup2.leave()
}
}
}
}
我的期望是,功能的asyncFunc1() -> asyncFunc2() -> function3()
順序運行。 當我真的運行這個應用程序時,我看到dispatchGroup2.notify
是在程序運行開始時觸發的,並且在asyncFunc2
完成後從未被調用。這裏有什麼問題?我嘗試過使用一個dispatchGroup
變量,而不是2(dispatchGroup
和dispatchGroup2
),但這不再工作。
工程就像一個魅力!非常感謝您指出我的錯誤並提出新的答案。我希望我可以多次註冊這個遊戲;) – user7418039