iOS developer essential skills/Modern Concurency
Modern Concurrency Deep Dive(18)
jgkim1008
2024. 12. 11. 23:20
TaskGroup의 취소
func test() async throws -> [UIImage] {
// 오류를 방출하고 싶으면 try 키워드 추가 필요
let _ = await withThrowingTaskGroup(of: Void.self) { group in
for url in urlArray {
group.addTask {
try await fetchImage()
}
}
// 이 두 메서드를 구현하지 않고 취소를 하면 오류를 방출하지 않고 조기종료만 된다.
// try await group.waitForAll()
// for try await _ in group {
// }
}
}
- 취소시 에러에 대한 로그를 확인하고 싶으면 밑에 있는 구문 추가 필요
- 또는 withThrowingDiscardingTaskGroup 을 사용하면 밑에 있는 구문은 추가할 필요 없이 자동으로 오류 방출
- withThrowingDiscardingTaskGroup 는 Void 리턴에 특화되어 있다.