[RxJava] Observable.defer()에 대하여


[RxJava] Observable.defer()에 대하여

Observable.defer() `Observable`을 Lazy하게 만드는 연산자. `Observable`은 원래 Lazy Excution이지 않나? 싶겠지만 `defer()`는 `Observable`의 실제 생성을 늦춘다 (Lazy Initialize). 즉, 구독(subscribe)시 생성이 이루어지는 것이다. 다른 create opterator들과의 차이가 잘 와닿지 않는다면 아래 예제를 보시라! 어떤 결과가 예상되는가? 1, 2가 출력될 것이라 생각했는가? 두구두구두구 결과는!! 왜 이런 결과가 나오는 것일까? 생성된 Observable의 연산자들이 Lazy Excution인 것일 뿐이지 `defer`를 제외한 Observable을 생성하는 Operation들은 모두 조급하게 실행(Eager Excution)되기 때문이다. 플로우를 나타내보자면 아래와..........



원문링크 : [RxJava] Observable.defer()에 대하여