iOS/RxSwift

[RxSwift] Map, FlatMap (Combining Operators )

최지철 2024. 6. 17. 09:47
728x90
반응형

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로 병합
728x90
반응형