응답 형태 변환
클로저 → Async / continuation 활용
•
에러 처리 X
return await withCheckedContinuation { continuation in
// 클로저 호출
// 성공시
continuation.resume(returning: T)
}
Swift
복사
•
에러 처리 O
return try await withThrowingCheckedContinuation { continuation in
// 성공시
continuation.resume(returning: T)
// 실패시
continuation.resume(throwing: Error)
}
Swift
복사
클로저 → Rx / Observable.create 활용
•
에러 처리 X
return Observable.create { observer in
// 클로저 호출
// 성공시
observer.onNext(T) // 이벤트 발송
observer.onComplete() // 스트림 종료
return Disposables.create()
}
Swift
복사
•
에러 처리 O
return Observable.create { observer in
// 클로저 호출
// 성공시
observer.onNext(T)
obserer.onComplete()
// 실패시
observer.onError(Error)
return Disposables.create()
}
Swift
복사
클로저 → Combine
•
에러 처리 O
return Future<성공, 실패> { promise in
// 클로저 호출
// 성공
promise(.success(T))
// 실패
promise(.failure(Error))
// promise(Result<T, Error>)
}
Swift
복사
•
에러 처리 X
return Future<성공, Never> { promise in
// 클로저 호출
// 성공
promise(.success(T))
}
Swift
복사
Combine → Async
Rx → Async
Combine Rx
•
RxCombine 사용