Notice
Recent Posts
Recent Comments
올해는 머신러닝이다.
[Rxjava2]AsyncSubject 본문
AsyncSubject
AsyncSubject
는 소스 Observable로부터 배출된 마지막 값(만)을 배출하고 소스 Observable의 동작이 완료된 후에야 동작한다. (만약, 소스 Observable이 아무 값도 배출하지 않으면AsyncSubject
역시 아무 값도 배출하지 않는다.)
즉 쉽게 말하자면 onCompleted
를 하기전 이벤트만 배출이 된다는 것이다. onCompleted
가 호출이 되지 않으면 배출이 되지 않는다.
io.reactivex.subjects.Subject<String> subject = AsyncSubject.create();
subject.subscribe( v -> System.out.println("Observer 1: " + v) ,
Throwable::printStackTrace,
() -> System.out.println("Observer 1 done!!")
);
subject.onNext("Alpha");
subject.onNext("Beta");
subject.onNext("Gamma"); <-- 이 값만 배출이 될것이다.
//subject.onComplete(); <-- onCompleted 호출
subject.subscribe( v -> System.out.println("Observer 2: " + v) ,
Throwable::printStackTrace,
() -> System.out.println("Observer 2 done!!")
);
그리고 내부적으로 Observable
에 대해서 takeLast(1).replay(1)
을 사용하고 있다는 점을 유의해야 한다.
이 Subject는 java 8 에서 CompletableFuture
과 유사합니다. 계산을을 수행해서 완료를 관찰하면서 값을 얻는 형식입니다.
'스터디 > RxJava2' 카테고리의 다른 글
[RxJava2]Buffering 에 대해서 알아보자. (0) | 2017.10.22 |
---|---|
[Rxjava2] 예제로 배우는 UnicastSubject (0) | 2017.10.22 |
[RxJava2]ReplaySubject (0) | 2017.10.22 |
[Rxjava2]BehaviorSubject 에 대해서 알아보자. (0) | 2017.10.22 |
[Rxjava2]예제로 이해하는 PublishSubject (0) | 2017.10.22 |