[typescript] RxJS 기본 개념

RxJS는 Reactive Extensions for JavaScript의 약자로서, JavaScript 환경에서 비동기적인 데이터 스트림을 다루는 데 사용되는 라이브러리입니다. 이 라이브러리는 Observable 시퀀스를 조작하고 변환하는데 유용한 다양한 연산자를 제공하여 비동기 코드를 더 쉽게 작성할 수 있도록 도와줍니다.

Observable이란 무엇인가?

Observable은 시간에 따라 여러 개의 값을 전달하는 데이터 스트림을 나타내는 객체입니다. 이러한 데이터 스트림은 비동기적으로 발생하며, Observable을 사용하여 해당 데이터를 관찰하고 반응할 수 있습니다.

RxJS의 기본 개념

RxJS를 사용하여 데이터 스트림을 다루는 기본 개념은 다음과 같습니다.

  1. Observable: 데이터 스트림 제공
  2. Observer: Observable에서 발생하는 이벤트에 반응
  3. Operator: Observable을 변환하거나 조작
  4. Subscription: Observable을 관찰하고 구독

예를 들어, 버튼 클릭 이벤트를 Observable로 변환하고 해당 Observable을 구독하여 클릭 이벤트에 반응하는 것이 가능합니다.

RxJS 사용 예시

다음은 RxJS를 사용하여 마우스 이벤트를 처리하는 간단한 예시 코드입니다.

import { fromEvent } from 'rxjs';
import { throttleTime, map } from 'rxjs/operators';

const button = document.querySelector('button');

fromEvent(button, 'click')
  .pipe(
    throttleTime(1000),
    map((event: MouseEvent) => event.clientX)
  )
  .subscribe(xPos => console.log('Clicked at', xPos));

위의 코드에서는 RxJS의 fromEvent 함수를 사용하여 버튼 클릭 이벤트를 Observable로 만들고, throttleTime 연산자를 사용하여 1초에 한 번씩만 이벤트를 받도록 제한하고, map 연산자를 사용하여 마우스 이벤트의 x좌표만 추출하여 출력하는 예시입니다.

이렇게 RxJS를 사용하면 비동기적인 이벤트를 간결하게 처리할 수 있습니다.

RxJS에 대한 추가 정보는 RxJS 공식 문서에서 찾아볼 수 있습니다.