티스토리 뷰

iOS/RxSwift

RxSwift - Infallible

포도 동 2022. 2. 28. 02:08

Infallible?

Infallible은 다른 형태의 Observable입니다. Observable이기때문에 이벤트를 방출합니다. 하지만 Next와 Completed만을 방출하고 Error는 방출하지 않음을 보장합니다.

 

Infallible의 구현체를 살펴보겠습니다.

구현체에도 주석으로  "Error calback is not expose because 'Infallible' can't error out."라고 명시되어 있습니다.

public func subscribe<Object: AnyObject>(
        with object: Object,
        onNext: ((Object, Element) -> Void)? = nil,
        onCompleted: ((Object) -> Void)? = nil,
        onDisposed: ((Object) -> Void)? = nil
    ) -> Disposable {
        self.asObservable().subscribe(
            with: object,
            onNext: onNext,
            onCompleted: onCompleted,
            onDisposed: onDisposed
        )
    }

위와 같이 Infallible에는 onError 클로저가 존재하지 않습니다.

그럼 어떻게 활용할까요?

let infallible1 = Infallible<Int>.create { observer in
    observer(.next(1))
    observer(.next(2))
    observer(.completed)
    
    return Disposables.create()
}

위와 같이 두 개의 정수를 방출하고 완료하는 Infallible Observable을 생성할 수 있습니다.

 

그리고 해당 Infallible을 구독하려고 하면..

위와 같이 onError 클로저를 제외한 나머지 클로저들을 Observable과 같은 방식으로 구현하면 됩니다.

 

참고 : https://github.com/ReactiveX/RxSwift/blob/main/Documentation/GettingStarted.md#infallible

'iOS > RxSwift' 카테고리의 다른 글

RxSwift - Relay  (0) 2022.03.05
RxSwift - Subject  (0) 2022.03.04
RxSwift - Disposable, DisposeBag  (0) 2022.03.01
RxSwift - Observables, Observers  (0) 2022.02.27
RxSwift 시작하기  (0) 2022.02.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
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
31
글 보관함