combineLatest, zip은 여러개의 Observable을 조합하여 단일 Observable을 방출하는 Combining Operator 이다.

combieLatest는 소스 옵저버블이 각 소스 옵저버블이 이벤트를 방출하고 나서 첫 이벤트를 방출하고 그 이후에 소스 옵저버블이 새로운 값을 방출할때 그 값을 결합한 이벤트를 방출한다.

소스 옵저버블을 받고 resultSelector로 값을 전달한다.
zip은 Combine Latest와 동일하게 소스 옵저버블 모두 이벤트를 방출해야 값을 방출한다. Combie Latest와 차이점은 소스 옵저버블 모두 새로운 값으로 이벤트를 방출해야 값을 방출한다.


source 옵저버블을 받고 resultSelector로 결과를 전달한다.
Observable.zip(numbers, strings) { "\\($0) - \\($1)"}
.subscribe { print($0) }
.disposed(by: bag)
numbers.onNext(1)
strings.onNext("one") // 1 - one
numbers.onNext(2) // 아직까지 새로운 값을 방출하지 않는다.
strings.onNext("two") // 2 - two
numbers.onCompleted() // 하나라도 completed가 전달되면 더이상 방출하지 않는다.
strings.onCompleted() // 2개의 소스모두 completed가 전달되면 최종적으로 종료
1과 one이 전달되고 나서 next 이벤트로 2를 전달했지만 Observable은 새로운 값을 방출하지 않는다.