在将数据绑定到另一个观察者之前拦截来自 observable 的数据

Intercept data from observable before binding it to another observer

我有一个 observable 发出的数据看起来像这样:

struct AlertData {
    let name: String
    let actionStream: PublishSubject<Void>
}

所以当我从 observable 接收到 AlertData 时,我直接将它绑定到另一个观察者,这很好用。但在将它绑定到另一个观察者之前,我想获取 'actionStream' 并从中获取事件。

所以,这就是我发出 AlertData 的方式:

let alertStream = PublishSubject<AlertData>()
alertStream.onNext(***)

这是接收部分:

alertStream.bind(to: anotherObserver).disposed(by: disposeBag)

但是在将 alertStream 绑定到 anotherObserver 之前,我想要 AlertData 内部的 actionStream 并接收从它发出的任何事件。正确的做法是什么?

let actionStream = alertStream
    .flatMap { [=10=].actionStream.asObservable() }

您实际上可能并不特别想要 flatMap(充当平面地图合并)。查看 flatMap 的变体,看看哪一个最适合您的特定情况:RxSwift’s Many Faces of FlatMap