- 옵저버블(Observable)이란?
ReactiveX에서는 옵저버는 옵저버블을 구독(Subcribe)하고 옵저버블이 방출하는 항목, *시퀀스를 통해 이벤트를 처리합니다.
쉽게 말해, 옵저버블은 이벤트를 전달하고 옵저버는 옵저버블을 감시하고 있다가 전달되는 이벤트를 처리합니다.
(*시퀀스란? 옵저버블이 될 수 있는 데이터 타입(Array, String, Int, 그 외 모델))
다이어그램을 한번 봐볼게요.
왼쪽에서 오른쪽 화살표는 시간을 나타내고 숫자로 표시된 부분은 시퀀스 요소를 나타냅니다.
- 옵저버블이 전달하는 세 가지 이벤트(onNext, onError, onCompleted)
아래 3가지 이벤트가 전달되는 시점은 옵저버가 구독(subscribe) 시작한 시점입니다.
(subscribe는 옵저버블과 옵저버를 연결하는 역할 -> 두 요소를 연결해야 이벤트가 전달)
public enum Event<Element> {
case next(Element)
case error(Swfit.Error)
case completed
}
onNext
옵저버블은 새로운 항목들을 배출할 때 마다 이 메소드가 호출됩니다.
onError
옵저버블이 기대하는 데이터가 생성되지 않았거나 다른 이유로 오류가 발생할 경우 이 메소드가 호출됩니다.
onCompleted
오류가 발생하지 않고 더 이상 배출할 항목이 없을 경우에 이 메소드가 호출됩니다.
여기서 onCompleted, onError 둘 중 하나의 이벤트로 종료되었다면 관련된 리소스가 자동으로 해지됩니다.
옵저버블 별로 해지하는건 번거롭기 때문에 DisposeBag()을 사용하여 disposable을 담아두었다가 한번에 해지하는 것이 간편합니다.
- 옵저버블 응용
옵저버블과 옵저버는 그저 ReactiveX의 시작점일 뿐입니다. 다양한 Operators을 통해 배출하는 연속된 항목들을 변환시키고, 결합하고, 조작하는 기능들을 통해 직관적인 코드를 작성할 수 있습니다.
다음 포스트 글에서는 여러 오퍼레이터들을 이용하여 옵저버블을 응용하는 글을 작성하도록 하겠습니다.
'RxSwift' 카테고리의 다른 글
[RxSwift] Subject 정리 (1) | 2020.05.24 |
---|---|
[RxSwift] Creating Observables 정리 (0) | 2020.05.16 |
RxSwift란 (0) | 2020.05.16 |
RxSwift Summary 카테고리 포스트 계획 (0) | 2020.05.16 |