아래 예제 코드에서 나는 실패한 경우 complete(false)
을 호출합니다. 그러나 DispatchGroup
개체를 사용하여 모든 비동기 요청이 완료되었는지 확인하기 위해 notify
이 호출되어 complete(true)
이 호출되어이 함수가 true
을 반환하고 false
을 반환해야하는 경우 오류가 발생하면 syncGroup.leave()
을 호출 할 수 없습니다. 실패.DispatchGroup을 사용하여 for 루프 내에서 비동기 호출을 수행하는 방법
올바르게 기능을 완료하지 못하면 syncGroup.leave()
을 호출하지 않는 것이 맞습니까? 아니면 syncGroup.leave()
으로 전화해야하고 결과가 무엇인지 판단해야하므로 실패시 false
을 반환 할 수 있습니까?
let syncGroup = DispatchGroup()
syncGroup.enter()
for track in unsynced {
register(time: time, withCompletion: { (success: Bool) ->() in
if success {
self.debug.log(tag: "SyncController", content: "Registered")
syncGroup.leave()
}
else {
complete(false)
}
})
}
//all requests complete
syncGroup.notify(queue: .main) {
self.debug.log(tag: "SyncController", content: "Finished registering")
complete(true)
}
. 달성하고자하는 것을 고려해야합니다. 아마도 여러 콜백을받을 준비가되어 있어야합니다 (아마도 'track'과 true/false 결과를 전달할 것입니다). 또는 콜백을 한 번 호출하고 트랙/상태 배열을 전달하십시오. – Paulw11