flatMap

Observable 的元素转换成其他的 Observable,然后将这些 Observables 合并

flatMap - 图1

flatMap 操作符将源 Observable 的每一个元素应用一个转换方法,将他们转换成 Observables。 然后将这些 Observables 的元素合并之后再发送出来。

这个操作符是非常有用的,例如,当 Observable 的元素本身拥有其他的 Observable 时,你可以将所有 Observables 的元素发送出来。


演示

  1. let disposeBag = DisposeBag()
  2. let first = BehaviorSubject(value: "??")
  3. let second = BehaviorSubject(value: "?️")
  4. let variable = Variable(first)
  5. variable.asObservable()
  6. .flatMap { $0 }
  7. .subscribe(onNext: { print($0) })
  8. .disposed(by: disposeBag)
  9. first.onNext("?")
  10. variable.value = second
  11. second.onNext("?️")
  12. first.onNext("?")

输出结果:

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