combineLatest

当多个 Observables 中任何一个发出一个元素,就发出一个元素。这个元素是由这些 Observables 中最新的元素,通过一个函数组合起来的

combineLatest - 图1

combineLatest 操作符将多个 Observables 中最新的元素通过一个函数组合起来,然后将这个组合的结果发出来。这些源 Observables 中任何一个发出一个元素,他都会发出一个元素(前提是,这些 Observables 曾经发出过元素)。


演示

tips: 可与 zip 比较学习

1. let disposeBag = DisposeBag()

3. let first = PublishSubject<String>()
4. let second = PublishSubject<String>()

6. Observable.combineLatest(first, second) { $0 + $1 }
7. .subscribe(onNext: { print($0) })
8. .disposed(by: disposeBag)

10. first.onNext("1")
11. second.onNext("A")
12. first.onNext("2")
13. second.onNext("B")
14. second.onNext("C")
15. second.onNext("D")
16. first.onNext("3")
17. first.onNext("4")

输出结果:

1. 1A
2. 2A
3. 2B
4. 2C
5. 2D
6. 3D
7. 4D