상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap을 사용하여 사용자 입력에 따른 결과를 어떻게 처리하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap은 RxJS에서 매우 자주 사용되는 연산자로, 특히 사용자 입력과 같은 이벤트 기반 비동기 처리를 할 때 유용합니다. switchMap을 사용하여 사용자 입력에 따른 결과를 처리하는 방식에 대해 자세히 설명하겠습니다. 1. 사용자 입력 Observable 생성 우선 사용자 입력 이벤트를 Observable로 만듭니다. 예를 들어, Angular에서 `<input>` 요소의 `keyup` 이벤트를 감지하는 경우 다음과 같이 할 수 있습니다. ```typescript fromEvent(inputElement, 'keyup').pipe( map(event => (event.target as HTMLInputElement).value) ) ``` 2. 입력값에 대해 비동기 작업 매핑 사용자 입력값이 바뀔 때마다 서버에 API 요청을 하거나 복잡한 비동기 작업을 실행해야 한다고 가정해보겠습니다. 이 때 switchMap을 사용합니다. switchMap은 소스 Observable이 emit하는 값을 받아 내부에서 새로운 Observable을 반환하며, 이전에 실행 중이던 내부 Observable이 있으면 이를 취소(구독 해제)합니다. 이 점이 매우 중요합니다. 예를 들어, 사용자가 빠르게 입력을 바꿀 때 이전 요청들이 비동기로 계속 처리될 수 있지만 switchMap을 사용하면 오직 최신 입력에 대해 실행된 비동기 요청만 살아있게 되어 불필요한 결과가 반영되는 것을 막습니다. 3. switchMap의 동작 예시 ```typescript fromEvent(inputElement, 'keyup').pipe( // 입력 이벤트로부터 실제 텍스트만 추출 map(event => (event.target as HTMLInputElement).value), // 서버 API 호출 등의 비동기 작업으로 매핑 switchMap(text => http.get(`/search?query=${text}`)) ).subscribe(result => { // 검색 결과 처리 displayResults(result); }); ``` 위 코드 흐름은 다음과 같습니다: - 사용자가 입력을 칠 때마다 input 값이 emit된다. - 각 입력값마다 `http.get` 요청 Observable로 변환한다. - 만약 이전 요청이 완료 되기 전에 또 다른 입력이 들어오면, 전에 요청 중이던 Observable 구독을 취소하고 최신 요청만 남겨 처리한다. - 결과가 도착하면 화면에 표시한다. 4. 요약 및 장점 - switchMap은 최신 이벤트/값에 관심이 있을 때(예: 검색어 실시간 반영) 유용하다. - 이전 비동기 작업을 취소해 리소스를 아끼고, 오래 걸리는 요청이 늦게 끝나서 UI가 낡은 데이터를 반영하는 문제를 방지한다. - 코드를 깔끔하게 하며 React나 Angular와 같은 UI 프레임워크에서 입력 값 변화에 따른 비동기 처리 패턴으로 널리 쓰인다. 따라서, 사용자 입력에 따른 결과를 switchMap으로 처리한다는 것은 "입력이 바뀔 때마다 새로운 비동기 요청을 만들고, 구식 요청을 취소하며 최신 입력에 대한 결과만 화면에 반영하는 방식"이라고 이해할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기