상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap을 사용하여 폰트와 이미지 로딩을 처리하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap은 RxJS에서 사용하는 고차 연산자 중 하나로, 이전에 실행 중인 Observable을 취소하고 가장 최신의 Observable만 구독하도록 하는 특징이 있습니다. 이를 폰트와 이미지 로딩에 적용하면, 사용자가 폰트나 이미지를 변경할 때 이전 로딩 작업을 중단하고 최신 요청만 처리하게 만들어 효율적으로 리소스를 관리할 수 있습니다. switchMap을 활용한 폰트 및 이미지 로딩 처리 과정 1. 상황 설정 예를 들어, 사용자가 UI에서 폰트나 이미지를 선택하는 인터페이스가 있고, 선택이 바뀔 때마다 해당 리소스를 서버에서 불러오는 비동기 작업이 있다고 가정합니다. 이때 사용자가 빠르게 여러 번 선택을 변경하면 이전에 시작됐던 로딩 작업들이 불필요하게 계속 실행될 수 있습니다. 2. Observable 스트림 생성 폰트 또는 이미지 선택 이벤트(예: 클릭, 드롭다운 변경 등)를 RxJS Observable로 만듭니다. 이 Observable은 선택이 바뀔 때마다 새로운 값(예: 폰트명, 이미지 URL 등)을 방출합니다. 3. switchMap으로 비동기 로딩 처리 - 폰트/이미지 선택 Observable에 `switchMap` 연산자를 사용해, 선택값에 따라 폰트나 이미지를 불러오는 Observable을 반환합니다. - 이렇게 하면 새로운 선택값이 들어올 때마다 이전 로딩 Observable은 자동으로 구독 취소되어 리소스 낭비가 방지됩니다. 4. 폰트 로딩 예시 ```typescript import { fromEvent } from 'rxjs'; import { switchMap, debounceTime } from 'rxjs/operators'; const fontSelect$ = fromEvent(fontSelectElement, 'change') .pipe( debounceTime(300), // 빠른 <a href='https://sangseek.com/sangseeks/연속선/ko'>연속선</a>택을 최소화 switchMap(event => { const fontName = event.target.value; return loadFontObservable(fontName); // 폰트 로딩을 Observable로 구현 }) ); fontSelect$.subscribe({ next: font => { document.body.style.fontFamily = font.family; console.log(`${font.family} loaded`); }, error: err => console.error('Font loading error:', err) }); ``` `loadFontObservable` 함수는 폰트 파일을 비동기적으로 로드하는 로직을 감싸서 Observable로 반환하는 함수입니다. 5. 이미지 로딩 예시 ```typescript const imageSelect$ = fromEvent(imageSelectElement, 'change') .pipe( switchMap(event => { const imageUrl = event.target.value; return loadImageObservable(imageUrl); // 이미지 로딩을 Observable로 구현 }) ); imageSelect$.subscribe({ next: imageElement => { imgContainer.innerHTML = ''; // 기존 이미지 제거 imgContainer.appendChild(imageElement); console.log('Image loaded'); }, error: err => console.error('Image loading error:', err) }); ``` `loadImageObservable`은 이미지 로딩 완료 시점에 완료를 알리는 Observable로 구현합니다. 장점 요약 - 최신 요청 우선 처리 사용자가 폰트나 이미지를 빠르게 변경해도, 가장 최신 선택값에 대응하는 리소스만 로딩되고, 이전 리소스 로딩은 취소됩니다. - 리소스 낭비 최소화 불필요한 폰트나 이미지 요청을 줄입니다. - 완성도 높은 사용자 경험 제공 불필요한 렌더링 중복을 피해 UI가 더 부드럽고 빠르게 반응합니다. --- 즉, switchMap은 폰트 및 이미지와 같이 사용자가 자주 바꾸는 리소스의 비동기 로딩 시, 중복되고 오래 걸리는 로딩 작업을 관리하고 취소하는 데 매우 적합한 도구입니다. Observable 스트림으로 UI 이벤트를 만들고, 이 이벤트 스트림을 switchMap으로 변환해 최신 리소스만 불러오도록 처리하는 패턴을 활용하는 것이 핵심입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기