flatMapLatest

将 Observable 的元素转换成其他的 Observable,然后取这些 Observables 中最新的一个

flatMapLatest - 图1

flatMapLatest 操作符将源 Observable 的每一个元素应用一个转换方法,将他们转换成 Observables。一旦转换出一个新的 Observable,就只发出它的元素,旧的 Observables 的元素将被忽略掉。


演示

tips:与 flatMap 比较更容易理解

1. let disposeBag = DisposeBag()
2. let first = BehaviorSubject(value: "??")
3. let second = BehaviorSubject(value: "?️")
4. let variable = Variable(first)

6. variable.asObservable()
7. .flatMapLatest { $0 }
8. .subscribe(onNext: { print($0) })
9. .disposed(by: disposeBag)

11. first.onNext("?")
12. variable.value = second
13. second.onNext("?️")
14. first.onNext("?")

输出结果:

1. ??
2. ?
3. ?️
4. ?️