combineLatest

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

combineLatest - 图1

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


演示

tips: 可与 zip 比较学习

  1. let disposeBag = DisposeBag()
  2. let first = PublishSubject<String>()
  3. let second = PublishSubject<String>()
  4. Observable.combineLatest(first, second) { $0 + $1 }
  5. .subscribe(onNext: { print($0) })
  6. .disposed(by: disposeBag)
  7. first.onNext("1")
  8. second.onNext("A")
  9. first.onNext("2")
  10. second.onNext("B")
  11. second.onNext("C")
  12. second.onNext("D")
  13. first.onNext("3")
  14. first.onNext("4")

输出结果:

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