RxJs는 ReactiveX의 Javascript를 위한 라이브러리다
ReactiveX는 Observer패턴, Iterator 패턴, 함수형 프로그래밍을 조합하여 가공한다.
ReactiveX는 이벤트를 observable로 추상화하여 시간에 따른 스트림으로 간주할 수 있게 한다.
observable이 observer에게 전달되기 전에 operator을 이용해 재가공이 가능하다.
RxJs를 사용하여 비동기 코드를 직관적이고 가독성이 좋게 작성할 수 있다
Observable은 시간의 흐름에 따라 발생하는 이벤트들의 스트림이라고 볼 수 있다.
pipeline을 설치해 여러 이벤트나 데이터를 Observer에게 보낸다.
스트림은 관념적으로 뒤에 $를 붙인다.
Observable.create()나 new Observable()로 생성할 수 있다.
Observable의 subscribe()를 통해 Observer 객체를 생성하고 만들어진 Observer 객체로
함수를 호출해 값을 발행한다.
Observable을 subscribe하고 반환받은 객체로 구독을 해제할 수 있다.
const subscription = observable.subscribe(x => console.log(x));
subscription.unsubscribe();
Observable의 unsubscribe()로 구독을 해제하면 Observable을 실행하지 않고 멈춘다.
Observer는 next, error, complete 3가지 함수로 구성된 객체이다.
next : Observable subscriber에게 데이터를 전달한다
complete : Observable subscriber에게 완료를 알리면 next가 데이터 전달을 멈춘다.
error : Observable subscriber에게 에러를 전달하면 next, complete가 발생하지 않는다.
Observable은 생성, 구독, 실행, 구독해제의 Life-Cycle을 가진다.
생성 : Observable.create()
구독 : Observable.subscribe()
실행 : observer.next()
구독해제 : observer.complete() / Observable.unsubscribe()