Domain/ReactiveX 8

[ReactiveX] Scheduler 프로그램의 세부 일정을 주관하는 관리자로 생각하면 이해하기 조금 쉽습니다. 뉴 스레드 스케줄러 이름처럼 새로운 스레드를 생성합니다. 새로운 스레드를 만들어 어떤 동작을 실행하고 싶을 때 Schedulers.newThread()를 인자로 넣어주면 됩니다. 요청을 받을 때마다 새로운 스레드를 생성합니다. 활용도가 높은 계산 스케줄러와 IO 스케줄러와 같은 다른 스케줄러를 제공하기 때문에 추천하는 방법은 아닙니다. 계산 스케줄러 추천하는 스케줄러는 크게 세 가지입니다. 첫 번째는 계산 스케줄러, 두 번째는 IO 스케줄러 그리고 트램펄린 스케줄러 입니다. 앞서 배운 newThread 스케줄러나 다른 스케줄러는 특수한 상황에서 적용하길 권장합니다. 계산 스케줄러는 CPU에 대응하는 계산용 스케줄러입니다. ‘계산’.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] SubscribeOn vs ObserveOn RxJava 스케줄러의 핵심은 결국 제공되는 스케줄러의 종류를 선택한 후 subscribeOn()과 observeOn() 함수를 호출하는 것이라고 할 수 있습니다. subscribeOn() Observable에서 구독자가 subscribe() 함수를 호출했을 때 데이터 흐름을 발행하는 스레드를 지정하는 역할을 합니다. subscribeOn() 함수는 처음 지정한 스레드를 고정시키므로 다시 subscribeOn() 함수를 호출해도 무시합니다. observeOn() 처리된 결과를 구독자에게 전달하는 스레드를 지정하는 역할을 합니다. observeOn()은 여러 번 호출할 수 있으며 호출되면 그다음부터 동작하는 스레드를 바꿀 수 있다. observeOn()함수를 지정하지 않으면 subscribeOn() 함수로.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] ConnectableObservable ConnectableObervable 클래스는 Subject 클래스처럼 차가운 Observable을 뜨거운 Observable로 변환합니다. Observable을 여러 구독자에게 공유할 수 있으므로 원 데이터 하나를 여러 구독자에게 동시에 전달할 때 사용합니다. 특이한 점은 subscribe() 함수를 호출해도 아무 동작이 일어나지 않는다는 것입니다. 새로 추가된 connect() 함수는 호출한 시점부터 subscribe() 함수를 호출한 구독자에게 데이터를 발행하기 때문입니다. ConnectableObservable 객체를 생성하려면 먼저 Observable에 publish () 함수를 호출해야 합니다. 이 함수는 여러 구독자에게 데이터를 발행하기 위해 connect () 함수를 호출하 기 전까지 데이.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] Subject Subject 클래스는 차가운 Observable을 뜨거운 Observable로 바꿔준다고 소개했습니 다. Subject 클래스의 특성은 Observable의 속성과 구독자의 속성이 모두 있다는 점입니다. Observable처럼 데이터를 발행할 수도 있고 구독자처럼 발행된 데이터를 바로 처리할 수도 있습니다. Rxjava에서 제공하는 주요 Subject 클래스에는 AsyncSubject,BehaviorSubject, PublishSubject, ReplaySubject 등이 있습니다. AsyncSubject 클래스 AsyncSubject 클래스는 Observable에서 발행한 마지막 데이터를 얻어올 수 있는 Subject 클래스입니다. 완료되기 전 마지막 데이터에만 관심이 있으며 이전 데이터는 무시합니다.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] Cold Observable Vs Hot Observable Cold Observable Observable을 선언하고 just(), fromlterable() 함수를 호출해도 옵저버가 subscribe() 함수를 호출하여 구독하거나 Hot Observable로 변환되지 않으면 데이터를 발행하지 않습니다. 다른 말로 게으른 접근법이라고도 합니다. 즉, 차가운 Observable은 구독자가 구독하면(Subscribe) 준비된 데이터를 처음부터 발행합니다. Observable, Single, Maybe는 Cold Observable이라고 할 수 있습니다. Subject 객체를 만들거나 ComiectableObservable 클래스를 활용하는 것으로 Hot Observable 객체로 변환이 가능합니다. 자발적으로 아무것도 하지 않는 수동적인 Observable Obse.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] Maybe Observable의 또 다른 특수 형태입니다. 영어의 ‘maybe’는 ‘아마도’라는 뜻입니다. 이 뜻처럼 Single 클래스와 마찬가지로 최대 데이터 하나를 가질 수 있지만 데이터 발행 없이 바로 데이터 발생을 완료(Single 클래스는 1개 완료, Maybe 클래스는 0 혹은 1개 완료)할 수도 있습니다. 즉, Maybe 클래스는 Single 클래스에 onComplete 이벤트가 주가된 형태입니다. /는 onSuccess 이벤트, x는 onError 이벤트, |는 onComplete 이벤트에 해당합니다. onSubscribe(d: Disposable) Maybe가 데이터를 전달 할 준비가 되면 이 함수를 호출합니다. Maybe와 연결을 취소할 수 있는 Disposable을 파라미터로 전달합니다. on.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] Single Observable의 특수한 형태입니다. Observable 클래스는 데이터를 무한하게 발행할 수 있지만 Single 클래스는 오직 1개의 데이터만 발행하도록 한정합니다. 보통 결과가 유일한 서버 API를 호출할 때 유용하게 사용할 수 있습니다. 또한 Observable의 특수한 형태이기 때문에 Observable와 사용법이 거의 동일합니다. 중요한 것은 데이터 하나가 발행과 동시에 종료(onSuccess)된다는 부분입니다. 라이프 사이클 관점에서 보면 onNext()와 onComplete() 함수가 onSuccess() 힘수로 통합된 것입니다. 따라서 Single 클래스의 라이프 사이클 함수는 onSuccess(T value) 함수와 onError() 함수로 구성됩니다. onSubscribe(d: Di.. Domain/ReactiveX 2021. 4. 29.
[ReactiveX] Observable Observable 클래스는 데이터의 변화가 발생하는 데이터 소스입니다. Observable은 옵저버 패턴을 구현합니다. 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자(옵저버) 목록을 객체에 등록합니다. 그리고 상태 변화가 있을 때마다 메서드를 호출하여 객체가 직접 목록의 각 옵저버에게 변화를 알려줍니다. 라이프 사이클은 존재하지 않으며 보통 단일 함수를 통해 변화만 알립니다. Observable의 콜백 onNext() Observable이 데이터의 발행을 알립니다. 기존의 옵저버 패턴과 같습니다. onComplete() 모든 데이터의 발행을 완료 했음을 알립니다. onComplete 이벤트는 단 한번만 발생하며. 발생한 후에는 더 이상 onNext 이벤트가 발생해선 안 됩니다. onError() O.. Domain/ReactiveX 2021. 4. 29.