iOS/RxSwift
[RxSwift] Map, FlatMap (Combining Operators )
최지철
2024. 6. 17. 09:47
반응형
map이란?
map은 Observable의 각 요소에 대해 주어진 함수를 적용하여 새로운 Observable을 반환합니다.
쉽게 말해, 입력 데이터를 원하는 형태로 변형하는 데 사용됩니다.
import RxSwift
let disposeBag = DisposeBag()
let numbers = Observable.of(1, 2, 3, 4, 5)
numbers
.map { $0 * 2 }
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
//결과값
//2
//4
//6
//8
//10
flatMap이란?
flatMap은 Observable의 각 요소를 다른 Observable로 변환하고, 그 모든 Observable을 하나의 Observable로 병합합니다.
주로 비동기 작업의 결과를 평탄화(flatten)하는 데 사용됩니다.
import RxSwift
let disposeBag = DisposeBag()
let numbers = Observable.of(1, 2, 3)
numbers
.flatMap { number -> Observable<String> in
return Observable.just("Number is \(number)")
}
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
//결과값
//Number is 1
//Number is 2
//Number is 3
flatMap의 활용 예시
- 비동기 네트워크 요청 후 결과 처리
- 데이터 스트림의 여러 소스를 하나로 병합
- 중첩된 Observable을 평탄화
map과 flatMap의 차이점
- map: 각 요소를 변형하여 새로운 요소로 반환하고, 결과는 여전히 단일 Observable
- flatMap: 각 요소를 Observable로 변환하고, 이 모든 Observable을 하나의 Observable로 병합
반응형