Geon

Modern Concurrency Deep Dive(18) 본문

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 리턴에 특화되어 있다.