반응형
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로 병합
반응형
'iOS > RxSwift' 카테고리의 다른 글
[RxSwift] 재사용으로 인해, 테이블뷰 셀안에 버튼이 반응하지 않을때 (0) | 2024.07.10 |
---|---|
[RxSwift] Rx를 이용한 페이징처리 (0) | 2024.06.25 |
[RxSwift] Rx를 이용한 백그라운드 감지 (0) | 2024.06.14 |
[RxSwift] ActivityIndicatorView를 Rx로 쉽게 컨트롤하기 (0) | 2024.06.08 |
[RxSwift] RxCocoa (binding, Traits, Driver..등) (0) | 2023.11.04 |