Post

combineLatest

combineLatest

여러 Observable에서 가장 최신 값을 합쳐서 방출하는 연산자

모든 Observable이 최소 하나의 값을 방출하여야함

여러 Observable중 최신 값이 들어오면 값들이 조합되어 새로운 값 방출

예제 코드

1
2
3
4
5
6
7
8
let first = BehaviorSubject(value: "A")
let second = BehaviorSubject(value: 1)

Observable.combineLatest(first, second) { str, num in
    return "\(str) - \(num)"
}
.subscribe(onNext: { print($0) })

  • 실행 흐름
1
2
3
4
5
6
7
8
9
first.onNext("B")  
B - 1   ( 번째 Subject가 새로운 값을 방출했으므로, 최신 값끼리 결합)

second.onNext(2)  
B - 2   ( 번째 Subject가 새로운 값을 방출했으므로, 최신 값끼리 결합)

first.onNext("C")  
C - 2   ( 번째 Subject가 새로운 값을 방출했으므로, 최신 값끼리 결합)

사용하는 경우

  • UI 바인딩: 텍스트 필드 입력과 버튼 상태를 결합할 때
  • API 요청: 여러 개의 네트워크 요청 결과를 합칠 때
  • 데이터 흐름 제어: 여러 개의 데이터 스트림을 동기화할 때
This post is licensed under CC BY 4.0 by the author.