combine operator 의 한 종류이다.
복수개의 스트림을 하나의 스트림으로 만들어준다.
연관 글: zip
[ ] 다양한 예시 코드 찾고 읽어보기
validation 을 통한 버튼 활성화
// isIDValid: Observable<Bool>
// isPasswordValid: Observable<Bool>
Observable.combineLatest(isIDValid, isPasswordValid)
.filter { $0.0 && $0.1 }
.map {
// 버튼 활성화 로직
}.disposed(by: disposeBag)
예시 링크
combineLatest 와 zip 을 비교하여 설명해주는 글
func exampleCombineLatest(a: Observable<Int>) -> Observable<(Int, String)> {
let b = a.map { "\\($0)" }
return Observable.combineLatest(a, b)
}
exampleCombineLatest(a: Observable.from([1, 2, 3]))
.subscribe(onNext: { print("combineLatest", $0) })
//prints
combineLatest (1, "1")
combineLatest (2, "1")
combineLatest (2, "2")
combineLatest (3, "2")
combineLatest (3, "3")
static func combineLatest<O1, O2, O3>(_ source1: O1, _ source2: O2, _ source3: O3) -> Observable<(O1.Element, O2.Element, O3.Element)> where O1 : ObservableType, O2 : ObservableType, O3 : ObservableType
2개의 스트림을 하나의 스트림으로 만들어주는 예시