Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- uiscrollview
- clean architecture
- combine
- UICollectionView
- collectionview
- 리팩토링
- Human interface guide
- map
- 리펙터링
- ribs
- Protocol
- swiftUI
- SWIFT
- 스위프트
- RxCocoa
- Xcode
- Refactoring
- rxswift
- tableView
- swift documentation
- 리펙토링
- 클린 코드
- UITextView
- uitableview
- 애니메이션
- HIG
- MVVM
- ios
- Observable
- Clean Code
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] RxSwift 서버 에러처리 (retry, retryWhen) 본문
retry() 연산자를 사용하여 에러처리
- retry() 가장 간단한 방법, 에러가 발생할 경우 시퀀스를 재생성하여 Error가 나지않도록 처리
func retry() -> Observable<Self.E>
- retry(_ maxAttemptCount:) 횟수를 제한할 수 있는 에러처리
func retry(_ maxAttemptCount:) -> Observable<E>
- retryWhen(_ notificationHandler:) notificationHandler의 타임은 TriggerObservable (= Observable이거나 Subject 형)
func retryWhen(_ notificationHandler:) -> Observable<E>
사용방법
- 만약 RxSwift를 쓰지 않는다면, NSOperation이나 GCD를 이용하여 몇초뒤에 에러가 발생한 이후 몇초 이후에 재시도
- retryWhen을 이용하여 에러처리 방법
- 형태: subscribe하기 전에 retryWhen을 호출
observable.retryWhen(retryHandler).subscribe(...)
- 재시도 횟수 정의
// 몇번 반복할 것인지 횟수 정의
let maxTryCount = 4
- retryWhen()사용
.retryWhen { error in
error.enumerated().flatMap { (tryCount, error) -> Observable<Int> in
if tryCount < maRetryCount - 1 {
return Observable.error(error)
}
return Observable<Int>.timer(1, scheduler: MainScheduler.instance).take(1)
}
}
'RxSwift' 카테고리의 다른 글
[iOS - swift] RxSwift - scan 연산자 (카운터 기능, toggle 버튼 구현, TextField 입력값 제한) (4) | 2021.12.28 |
---|---|
[iOS - swift] RxSwift - UITextField (rx.controlEvent, rx.text, rx.observe), UIControl 액션 (0) | 2021.03.05 |
[RxSwift] 핵심 개념 (5) | 2020.06.25 |
Comments