본문 바로가기
Front-end

RxJS의 기본

by 탄이. 2019. 1. 14.

RxJS

개요

  • JavaScript 용 반응형 확장 라이브러리

  • RxJS는 Observables를 사용하여 비동기식 또는 콜백 기반 코드를보다 쉽게 작성하도록하는 리 액티브 프로그래밍 용 라이브러리입니다.

  • RxJS는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 작성하기위한 라이브러리입니다.

  • Observable, 위성 유형 (Observer, Schedulers, Subjects) 및 Array#extras (Map, Filter, Reduce, Every 등)에 영향을받는 연산자를 사용하여 비동기 이벤트를 콜렉션으로 처리 할 수 있습니다.

  • ReactiveX는 Observer 패턴과 Iterator 패턴을 결합하고 컬렉션을 사용한 함수형 프로그래밍을 통해 이벤트 시퀀스를 관리하는 이상적인 방법의 필요성을 충족시킵니다.

핵심 개념

  • 비동기 이벤트 관리를 해결하는 RxJS의 핵심 개념은 다음과 같습니다.

  1. Observable

    • ReactiveX에서 옵저버는 Observable을 구독한다.

    • Obseravable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다.

    • 이러한 패턴은 동시성 연산을 가능하게 한다.

    • 그 이유는 Observable이 객체를 배출할 때까지 기다릴 필요 없이 어떤 객체가 배출되면 그 시점을 감시하는 관찰자를 옵저버 안에 두고 그 관찰자를 통해 배출 알림을 받으면 되기 때문이다.

  2. Operators

    • ReactiveX를 지원하는 언어 별 구현체들은 다양한 연산자들을 제공하는데, 이 중에는 공통적으로 제공되는 연산자도 있지만 반대로 특정 구현체에서만 제공하는 연산자들도 존재한다.

    • 또한, 언어별 구현체들은 이미 언어에서 제공하는 메서드의 이름과 유사한 형태로 연산자의 네이밍 컨벤션을 유지하고 있다.

  3. Single

    • RxJava(그리고 RxGroovy나 RxScala 같은 reactivex의 구현체들)는 Observable과 유사한 “Single”을 제공한다.

    • Single은 Obvservable의 한 형태이지만, Observable처럼 존재하지 않는 곳에서부터 무한대까지의 임이의 연속된 값들을 배출하는 것과는 달리, 항상 한 가지 값 또는 오류 알림 둘 중 하나만 배출한다.

  4. Subject

    • 주제(subject)는 옵저버나 Observable처럼 행동하는 ReactiveX의 일부 구현체에서 사용 가능한 일종의 교각 혹은 프록시라고 볼 수 있는데, 그 이유는 주제는 옵저버이기 때문에 하나 이상의 Observable을 구독할 수 있으며 동시에 Observable이기도 하기 때문에 항목들을 하나 하나 거치면서 재배출하고 관찰하며 새로운 항목들을 배출할 수도 있다.

    • 하나의 주제는 하나의 Observable을 구독하면서, (Observable이 "차가운" Observable인 경우 즉, 옵저버가 구독을 시작하기 전까지 항목들의 배출을 지연시키는 Observable일 경우)Observable이 항목들을 배출시키도록 동작시킨다.

    • 그 결과로 인해 원래는 "차가운" Observable이었던 주제를 "뜨거운" Observable로 만들기도 한다.

  5. Schedulers

    • Observable 연산자 체인에 멀티스레딩을 적용하고 싶다면, 특정 스케줄러를 사용해서 연산자(또는 특정 Observable)를 실행하면 된다.

    • ReactiveX의 일부 Observable 연산자는 사용할 스케줄러를 파라미터로 전달 받기도 하는데, 이 연산자들은 자신이 처리할 연산의 일부 또는 전체를 전달된 스케줄러 내에서 실행한다.


댓글