withLatestFrom
将两个 Observables 最新的元素通过一个函数组合起来,当第一个 Observable 发出一个元素,就将组合后的元素发送出来

withLatestFrom 操作符将两个 Observables 中最新的元素通过一个函数组合起来,然后将这个组合的结果发出来。当第一个 Observable 发出一个元素时,就立即取出第二个 Observable 中最新的元素,通过一个组合函数将两个最新的元素合并后发送出去。
演示
当第一个 Observable 发出一个元素时,就立即取出第二个 Observable 中最新的元素,然后把第二个 Observable 中最新的元素发送出去。
let disposeBag = DisposeBag()let firstSubject = PublishSubject<String>()let secondSubject = PublishSubject<String>()firstSubject.withLatestFrom(secondSubject).subscribe(onNext: { print($0) }).disposed(by: disposeBag)firstSubject.onNext("🅰️")firstSubject.onNext("🅱️")secondSubject.onNext("1")secondSubject.onNext("2")firstSubject.onNext("🆎")
输出结果:
2
当第一个 Observable 发出一个元素时,就立即取出第二个 Observable 中最新的元素,将第一个 Observable 中最新的元素 first 和第二个 Observable 中最新的元素second组合,然后把组合结果 first+second发送出去。
let disposeBag = DisposeBag()let firstSubject = PublishSubject<String>()let secondSubject = PublishSubject<String>()firstSubject.withLatestFrom(secondSubject) {(first, second) inreturn first + second}.subscribe(onNext: { print($0) }).disposed(by: disposeBag)firstSubject.onNext("🅰️")firstSubject.onNext("🅱️")secondSubject.onNext("1")secondSubject.onNext("2")firstSubject.onNext("🆎")
输出结果:
🆎2
