Promise vs Observable

값이 한 번인지, 계속 흐르는지부터 선택한다

RxJS가 필요한지는 데이터의 개수, 취소 가능성, 연산자 조합, 구독 정리 기준으로 판단합니다. 스트림이 꼬이면 생성 지점부터 구독 해제까지 차례대로 확인합니다.

Promise를 고를 때

one-shot
  • 결과가 한 번만 필요하고 완료 후 다시 값이 오지 않습니다.
  • 취소보다 단순한 성공과 실패 처리가 더 중요합니다.
  • await로 순차 흐름을 읽는 편이 더 명확합니다.

Observable을 고를 때

stream
  • 클릭, 입력, 웹소켓처럼 값이 여러 번 발생할 수 있습니다.
  • debounce, retry, switchMap 같은 연산자 조합이 필요합니다.
  • unsubscribe로 더 이상 필요 없는 흐름을 정리해야 합니다.
01

Observable

무엇이 값의 원천인지, 구독 전 실행되면 안 되는지 확인합니다.

02

Operator

값 변환, 필터링, 비동기 펼침을 pipe 안에 선언합니다.

03

Observer

next, error, complete가 각각 어떤 UI 반응을 만들지 정합니다.

04

Subscription

컴포넌트 종료, 요청 교체, 화면 이탈 시점에 해제합니다.

값이 안 온다

subscribe가 호출됐는지, source가 실제 이벤트를 만들고 있는지 봅니다.

타입이 바뀐다

각 map 이후 Observable<T>의 T가 무엇으로 추론되는지 확인합니다.

계속 남는다

무한 스트림에는 unsubscribe, take, takeUntil 중 하나가 필요합니다.