ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RxJava] 2. Subject / 생산자
    Programming/RxJava 2020. 9. 2. 15:27
    Subject
    • Subject는 Observable과 Observer를 모두 구현한 추상 타입으로 하나의 소스로부터 다중의 구독자에게 멀티캐스팅이 가능하다.
    • Subject는 Observer를 구현하므로 onNext(), onError(), onComplete() 등 메소르르 수동으로 호출하여 이벤트를 구독자들에게 전달할 수 있다.
    • Observable 이면서 Observable이다. 발행과 구독을 모두 Subject 객체를 통해 한다.

    * Observable과 Observer의 성격을 둘다 가지고 있는 클래스
    * Observable이 가지고 있는 subscribe와 여러 operator를 사용 할 수 있음
    * Observer가 가지고 있는 onNext, onError, onComplete를 사용 할 수 있음
    * subscribe 했을 때 데이터를 넘겨주는 방식에 따라 Publish, Behavior, Replay, Async로 나눠져 있음

     

    PublishSubject

    • PublishSubject는 Subject를  구현한 가장 단순한 타입 중 한 가지로 구독자들에게 이벤트를 널리 전달한다.

     

    ReplaySubject

    • 구독 시 이전에 발행했던 아이템 모두를 구독자에게 전달한다.
    • PublishSubject에 cache 연산자를 적용한 것과 유사하다

     

    BehaviorSubject

    • BehaviorSubject는 PublishSubject와 동일하게 동작한다.
    • 차이점은 새로운 옵저버를 통해 구독 시 가장 마지막 아이템 만을 발행한다는 것이다.
    • 가장 최근 상태값을 가져오는 것이 중요할 때 사용할 수 있다. 
    • 구독을 시작할 때 Subject가 마지막으로 발행한 아이템을 가져오며, 이후에 발행되는 아이템들은 PublishSubject와 동일하기 모두 수신할 수 있다.

     

     

    AsyncSubject

    • onComplete() 호출 직전에 발행된 아이템만 구독자들에게 전달한다.

     

     

    생산자
    • Single, Maybe, Completable
    • 데이터를 발행하고 끝내는 생산자
    • 네트워크 통신 같은 단건 이벤트 처리를 위해 사용

     

    Single

    • 1개의 데이터를 전달하는 생산자
    • 싱글 옵저버를 구독하거나 컨슈머를 구독하는 방식으로 소비자를 추가
    • 일반적 네트워크 통신 시 주로 사용한다.

     

    Maybe

    • 0..1개 데이터를 전달하는 생산자

     

    Completable

    • 데이터 0개를 전달하는 생산자
Designed by Tistory.