Observable

Park Bumsoo·2022년 4월 30일
0

Observable

Observable은 ReactiveX에서 제공하는 기능으로

Observer를 통해 임의의 순서에 따라 병렬로 실행되고 결과를 연산하는 특징을 가지고 있다.

  • Observable
    다양한 함수를 내포하고 있으며, 데이터를 관찰 할 수 있는 형태로 바꾸는 클래스이다.
    Observable이라는 말 그대로 "관찰 할 수 있는"을 의미하며 Observer가 데이터를 조작할 수 있게 도와주는
    기능을 가진 클래스이다.
  • Observer
    Observable 클래스에 의해 관찰 및 수정이 가능해진 데이터들을 직접적으로 수정시켜주는 기능을 말한다.

기능

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

Cold Observable / Hot Observable

Hot Observable
생성되자 마자 항목(아이템)들을 배출하는 Observable를 뜻한다.
Cold Observable
Subscribe메서드를 통해 observer를 연결 할 때 아이템을 배출하며
가장 일반적인 형태의 옵저버이다.

Cold ObservableHot Observable와 다르게스트림을 분기시키는 성질을 가지고 있지 않는다. 따라서, Cold Observable을 여러번 Subscribe 하는 경우, 각각 별도의 스트림이 생성되고 할당되게 됩니다.

그러나, Hot Observable은 스트림을 분기시키는 성질을 가지고 있기 때문에 스트림의 분기가 필요한 경우 Hot Observable을 사용해야 합니다.

profile
프론트엔드 주니어 개발자(React, Next.js)

0개의 댓글