[typescript] RxJS 서브젝트

RxJS(Reactive Extensions for JavaScript)는 자바스크립트로 비동기 데이터 스트림을 다루기 위한 라이브러리이다. 이 라이브러리는 옵저버 패턴을 구현하고 효율적으로 데이터를 다룰 수 있도록 돕는다. 이 중요한 개념 가운데 하나가 서브젝트(Subjects)다. 이번에는 RxJS의 서브젝트에 대해 알아보자.

서브젝트란 무엇인가?

서브젝트는 옵저버 패턴의 구현체로, 옵저버인 동시에 옵서버블(observable)이 될 수 있는 객체이다. 즉, 서브젝트는 동시에 데이터를 방출(emit)하는 주체이자 구독(subscribe)할 수 있는 주체이다.

언제 사용해야 하는가?

서브젝트는 주로 여러 구독자(subscriber)가 필요한 상황에서 사용된다. 즉, 하나의 데이터 스트림을 여러 구독자가 동시에 사용해야 하는 경우에 서브젝트를 활용할 수 있다.

다양한 종류의 서브젝트

RxJS에는 여러 종류의 서브젝트가 존재한다. 그 중에서 가장 많이 사용되는 것은 Subject, BehaviorSubject, ReplaySubject, AsyncSubject 등이다. 각각의 서브젝트는 고유한 동작과 특징을 가지고 있으므로, 상황에 맞게 적절한 서브젝트를 선택하여 사용해야 한다.

예제 코드

import { Subject } from 'rxjs';

const subject = new Subject<number>();

subject.subscribe({
  next: (v) => console.log(`observerA: ${v}`)
});

subject.next(1);
subject.next(2);

subject.subscribe({
  next: (v) => console.log(`observerB: ${v}`)
});

subject.next(3);

위 예제 코드는 Subject를 사용하여 구독, 데이터 방출 등의 동작을 보여준다.

참고 자료

  1. RxJS 공식 문서: https://rxjs.dev/guide/subject

위의 링크는 RxJS 공식 문서의 서브젝트 관련 내용을 확인할 수 있다.