RxJS Lifecycle

Observable 구독 수명 주기와 해제 경계

Observable은 생성보다 해제가 더 중요하며, source, operator, subscription, error, complete 흐름을 함께 이해해야 누수를 막을 수 있습니다.

01

Source 생성

fromEvent, interval, ajax처럼 값을 발생시키는 출처를 만듭니다.

Cold/Hot 구분
02

Operator 연결

map, filter, switchMap, catchError가 값을 변환하고 흐름을 제어합니다.

Pipe
03

Subscribe

구독이 시작되면 실제 실행이 발생하고 next, error, complete 콜백이 연결됩니다.

Execution
04

Error 처리

catchError 위치에 따라 전체 스트림이 끝나거나 내부 요청만 복구됩니다.

경계
05

Unsubscribe

컴포넌트 종료, 재요청, 라우트 변경 시 구독을 끊어 자원을 회수합니다.

Cleanup
switchMap
이전 요청 취소 검색 자동완성처럼 최신 입력만 유효할 때 이전 내부 구독을 해제합니다.
취소 의미 명확
mergeMap
동시 실행 허용 여러 요청을 병렬로 유지해야 할 때 쓰지만 동시성 제한을 고려합니다.
concurrency 확인
takeUntil
명시적 해제 컴포넌트 수명 주기 종료 신호와 연결해 누수를 줄입니다.
cleanup 표준

구독 안전성 확인

해제 지점 무한 스트림은 complete에 기대지 말고 unsubscribe 경로를 둡니다.
오류 위치 catchError를 어디에 두느냐에 따라 외부 스트림 생존 여부가 달라집니다.
중복 구독 같은 source를 여러 번 subscribe하면 네트워크나 이벤트가 중복될 수 있습니다.