상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
이별 후 친구로 지내기를 원할 때, 상대방의 동의를 어떻게 구해야 할까요?
이별 후 친구로 지내기를 성공적으로 이룬 사람의 이야기를 들으면 어떤 점을 배울 수 있을까요?
이별 후 친구로 지내면서 새로운 친구를 사귀는 것은 괜찮나요?
이별 후 친구로 지내기를 위해 서로에게 어떻게 다가가야 할까요?
서브버전 SVN에 있는 파일을 삭제하는 방법은?
애드몹 eCPM이 광고의 품질과 연관되어 있나요?
애드몹 eCPM을 최적화하기 위한 관계 구축 방법은?
이별 후 상대방을 잊기 위해 어떤 노력이 필요할까요?
이별 잘 하는 법을 익히고 나서 새로운 사람을 만나는 것이 어려운가요?
코니아일랜드에서의 겨울 활동은 무엇이 있나요?
이별편지를 쓴 후 감정적으로 다시 상처받는 일이 있을까요?
여자 이별 후 일주일, 나의 정서를 이해하기 위한 책은 추천해 주세요.
Previous
Next
수정하기 - switchMap으로 반환되는 Observable의 생명주기는 어떻게 관리하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`switchMap` 연산자는 RxJS에서 매우 유용하게 사용하는 연산자 중 하나입니다. `switchMap`은 소스 Observable이 방출한 값을 받아 내부 함수에 전달하고, 이 함수가 반환하는 새 Observable을 구독(subscribe)합니다. 중요한 점은, 소스 Observable이 새로운 값을 방출할 때마다 이전에 구독하던 내부 Observable은 자동으로 구독 해제(unsubscribe)된다는 것입니다. 여기서 핵심은 `switchMap`으로 반환되는 내부 Observable의 생명주기(구독/해제)를 `switchMap` 연산자가 자동으로 관리한다는 점 입니다. 상세 설명 1. 내부 Observable 구독 시점 소스 Observable이 값을 방출하면 `switchMap`은 매핑 함수(함수 인자)를 호출해 새 내부 Observable을 만듭니다. 그리고 이 내부 Observable을 즉시 구독합니다. 2. 이전 내부 Observable 구독 해제 소스 Observable이 또 다른 값을 방출해 매핑 함수가 다시 호출되어 새로운 내부 Observable이 생성되고 구독되면, `switchMap`은 이전에 구독 중이던 내부 Observable을 자동으로 구독 해제(unsubscribe)합니다. 이를 통해 이전 내부 Observable에서 발생할 수 있는 메모리 누수나 불필요한 작업을 방지합니다. 3. 소스 Observable이 완료되거나 에러 발생 시 소스 Observable이 완전히 종료(complete)되거나 에러가 발생하면, `switchMap`에 의해 구독되고 있던 내부 Observable 또한 자동으로 종료됩니다. 즉, 내부 Observable의 생명주기는 소스 Observable과 밀접하게 연관되어 있습니다. 4. 내부 Observable의 종료가 소스 Observable에 미치는 영향 중요한 점은 내부 Observable이 완료되더라도 소스 Observable이 계속 값을 방출한다면 `switchMap`은 계속해서 새로운 내부 Observable로 전환합니다. 반대로, 내부 Observable에서 에러가 발생하면 `switchMap` 연산자는 기본적으로 전체 스트림을 에러로 종료시킵니다. 정리 - `switchMap`은 매번 새로운 내부 Observable 구독과 동시에 이전 내부 Observable의 구독을 해제한다. - 따라서 `switchMap`으로 반환되는 내부 Observable의 생명주기는 자동으로 관리된다. - 개발자는 별도로 구독 해제를 신경 쓸 필요 없이, 반응형 프로그래밍 흐름에 따라 자연스럽게 리소스가 해제된다. 팁 - 만약 내부 Observable이 완전히 처리되는 것이 중요하거나 특정 후속 처리가 필요하다면 `finalize` 연산자를 내부 Observable에 붙여 내부 Observable 구독이 종료될 때 실행할 로직을 작성할 수 있습니다. - 또한, 외부에서 전체 스트림을 관리하기 위해선 `takeUntil` 같은 다른 연산자를 조합해 구독을 제어할 수 있습니다. --- 즉, `switchMap`은 소스 Observable에서 방출되는 값에 따라 내부 Observable을 동적으로 바꾸어가면서, 이전 내부 Observable의 구독을 안전하게 취소하는 메커니즘을 내장하고 있기 때문에, 반환되는 Observable의 생명주기를 자동으로 깔끔하게 관리한다고 이해하시면 됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기