在将数据绑定到另一个观察者之前拦截来自 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
我有一个 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