-
RxSwift - Observable factoryProgramming/RxSwift 2022. 3. 21. 18:31
안녕하세요 BeePeach입니다 :)
오늘은 Observable factory에 대해서 공부해보도록 하겠습니다.
사실 이 부분은 이후에 포스팅할 Operator부분에서 다뤄도 되는 부분인데 먼저 다뤄보도록 하겠습니다.
Observable factory 란 Observable에서 제공하는 deferred 오퍼레이터를 이용해서 조건에 따라 구독자마다 새로운 Observable을 생성하는 것을 말합니다.
Factory 즉, 공장이라는 것을 떠올려보면 Observable을 찍어내는 공장을 생각하면 됩니다.
주의해야하는 것은 조건에 따라 다른 이벤트를 방출하는 게 아니라 다른 Observable을 생성한다는것입니다.
말로만해서는 이해가 안가니까 찬찬히 살펴보도록 하겠습니다.
deffered 오퍼레이터를 살펴보면 클로저 하나를 파라미터로 받고 리턴형이 Observable입니다.
그리고 파라미터로 받는 클로저는 () -> Observable으로 Observable을 리턴해줘야 합니다.
즉 새로운 옵저버가 구독을 할 때마다 새로운 sequence를 리턴해주는 오퍼레이터입니다.
예시를 보도록 하겠습니다.
이 코드는 새로운 옵저버가 구독을 할 때마다 isOdd 변수가 변경이 되고 이 변수에 따라서 방출하는 데이터가 달라지는 Observable을 생성합니다.
그래서 factory를 구독하게 되면 evenNumber를 방출하는 Observable이 생성되고 옵저버에게 2, 4, 6을 방출하게 됩니다.
그다음에는 oddNumber를 방출하는 Observable이 생성되고 1, 3 5를 방출하게 됩니다.
이렇게 Observable을 따로따로 만들 수도 있고 deferred 오퍼레이터를 이용해서 상황에 맞춰서 observable을 생성하는 factory를 만들 수 있습니다.
설명한것과 마찬가지로 사용하는 입장에서는 이게 Observable factory인지 Observable인지 중요하지 않습니다.
그냥 이전과 같이 구독해서 사용하며 조건에 맞게 알맞은 Observable이 생성되고 방출을 시작하게 됩니다.
참고자료
728x90'Programming > RxSwift' 카테고리의 다른 글
RxSwift - Subject와 Relay (0) 2022.03.25 RxSwift - Trait (0) 2022.03.24 RxSwift - Disposable (0) 2022.03.17 RxSwift - Subscribe (0) 2022.03.17 RxSwift - Observable (0) 2022.03.05