Observable은 ReactiveX에서 제공하는 기능으로
Observer를 통해 임의의 순서에 따라 병렬로 실행되고 결과를 연산하는 특징을 가지고 있다.
Subscribe
: 메서드를 통해 옵저버와 Observable을 연결하고 아래의 메서드를 사용할 수 있게 된다.
onNext
:
Observable은 새로운 항목들을 배출할 때마다 이 메서드를 호출한다.
이 메서드는 Observable이 배출하는 항목을 파라미터로 전달 받는다.
onError
:
Observable은 기대하는 데이터가 생성되지 않았거나 다른 이유로 오류가 발생할 경우 오류를 알리기 위해 이 메서드를 호출한다. 이 메서드가 호출되면 onNext나 onCompleted는 더 이상 호출되지 않는다. onError 메서드는 오류 정보를 저장하고 있는 객체를 파라미터로 전달 받는다.
onCompleted
:
오류가 발생하지 않았다면 Observable은 마지막 onNext를 호출한 후 이 메서드를 호출한다.
def myOnNext = { item -> /* 필요한 연산을 처리한다 */ };
def myError = { throwable -> /* 실패한 호출에 대응한다 */ };
def myComplete = { /* 최종 응답 후 정리 작업을 한다 */ };
def myObservable = someMethod(itsParameters);
myObservable.subscribe(myOnNext, myError, myComplete);
// 필요한 코드를 계속 구현한다
출처 : https://reactivex.io/documentation/ko/observable.html
Hot Observable
생성되자 마자 항목(아이템)들을 배출하는 Observable를 뜻한다.
Cold Observable
Subscribe
메서드를 통해 observer를 연결 할 때 아이템을 배출하며
가장 일반적인 형태의 옵저버이다.
Cold Observable은 Hot Observable와 다르게스트림을 분기시키는 성질을 가지고 있지 않는다. 따라서, Cold Observable을 여러번 Subscribe 하는 경우, 각각 별도의 스트림이 생성되고 할당되게 됩니다.
그러나, Hot Observable은 스트림을 분기시키는 성질을 가지고 있기 때문에 스트림의 분기가 필요한 경우 Hot Observable을 사용해야 합니다.