-
Async let & TaskGroup Concurrency 예시개발/Swift 2024. 4. 10. 19:56
- Async let 같은경우 서너개의 API를 동시 호출 해야 하는 경우 사용했다.
피드 화면의 경우 하나의 API 응답이 아닌 각각의 API 응답값을 조합해서 사용 해야했음.
응답이 모두 완료된 시점에 이벤트를 전달 해줘야 했음
각각의 함수도 모두 async 함수임
public func getAllInitData() async { isRequesting.accept(true) async let birthdayFriends = getFriends() async let recommendedFriends = getRecommendedFriends() async let productGroups = getProductGroups() async let giftCards = getGiftCards(typeValue: thanksCardType.value.rawValue) _ = await (birthdayFriends, recommendedFriends, productGroups, giftCards) isRequesting.accept(false) }
이미 내부 함수에서 데이터 처리를 하고있어 응답값을 사용 하지는
병렬적으로 호출이 가능하며 여러 API 임에도 한곳에서 관리하는 부분이 좋음, getAllInitData 함수가 끝나는시점에 View를 업데이트 하던 원하는 동작을 실행 할수 있음
- Task Group
let result = await withTaskGroup(of: Bool.self) { group in for updateList in splitUpdateList { group.addTask { let result = await service.updateList(userIdentifier: userID, updateList: updateList) switch result { case .success: return true case .failure: return false } } } return await group.allSatisfy({ $0 }) } return result }
Async 작업이 서너개 이상 or 동적 일때 사용함
반복문을 돌려서 같은 API 호출을 여러번 할때 사용
'개발 > Swift' 카테고리의 다른 글
Xcode Instrument 톺아보기 (0) 2024.04.11 Crashlytics & Google Analytics 를 이용한 원인 분석 (0) 2024.04.11 Swift 네트워크 구조 잡기 (0) 2024.04.08 Xcode 정적 라이브러리 생성과 기능 모듈화 (0) 2024.04.07 [Swift] suspend resume partial function for 함수명 해결 방법 (0) 2024.03.01