상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap과 catchError를 함께 사용할 수 있나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
네, switchMap과 catchError는 RxJS에서 함께 사용할 수 있습니다. 두 연산자는 Observable <a href='https://sangseek.com/sangseeks/스트림/ko'>스트림</a>을 다루는데 매우 자주 조합되는 기능들입니다. 먼저 각각의 역할을 간단히 짚어보면: - switchMap : 소스 Observable에서 발행된 값을 받아, 그 값을 이용해 새로운 내부 Observable을 만들어 구독하고, 이전에 구독한 내부 Observable이 있다면 취소(구독 해제)하는 연산자입니다. 주로 비동기 작업(예: HTTP 요청)을 시퀀셜하게 처리할 때 유용합니다. - catchError : Observable에서 에러가 발생할 경우 에러를 잡아 처리하고, 대체 Observable을 반환하거나 에러를 다시 던질 수 있게 해주는 연산자입니다. 이 둘을 함께 사용하는 일반적인 패턴은 다음과 같습니다. ```typescript import { of } from 'rxjs'; import { switchMap, catchError } from 'rxjs/operators'; sourceObservable.pipe( switchMap(value => someHttpRequest(value).pipe( catchError(err => { // 에러 처리 로직 console.error('에러 발생:', err); // 대체 값 반환 return of(defaultValue); }) ) ) ).subscribe(result => { // 결과 처리 }); ``` 설명하자면, sourceObservable에서 값이 발행되면 switchMap이 내부 Observable(someHttpRequest)을 생성해 구독합니다. 만약 HTTP 요청 중 에러가 발생하면, 내부 Observable 단에서 catchError가 이를 잡아 처리할 수 있습니다. 이렇게 하면 에러가 외부 스트림까지 전파되지 않고 적절히 처리되므로 스트림이 중단되지 않고 계속 흐르게 됩니다. 반대로, catchError를 switchMap 밖에 두면(즉, sourceObservable.pipe(switchMap(...), catchError(...)))은 내부 Observable에서 에러가 발생하여 전파되면 전체 스트림에서 에러를 잡는 형태가 됩니다. 하지만 이 경우 switchMap 내의 내부 Observable 구독이 중단되고, 다시 새로운 값이 들어와도 스트림이 종료되거나 다른 방식으로 동작할 수 있으므로 보통은 내부 Observable 단에서 catchError를 사용하는 게 더 안전하고 세밀한 에러 관리를 할 수 있습니다. 따라서, switchMap과 catchError는 다음과 같이 함께 매우 효과적으로 사용할 수 있으며, 내부 Observable에서 에러를 잡고 처리하는 용도로 많이 활용됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기