我遇到了三个可观察值映射到结果流的情况。
第一个可观察变量告诉我应该从其他两个可观察变量中取值。在每次发射第一个可观察到的对象时,结果流都切换为发出适当的可观察到的平面图。
这种情况通常可以通过flatMapLatest
完成。
但是,在flatMap的每个开关上,我也都想重播最新的陈旧值。这是一个问题,因为flatMapLatest
不提供重放现有可观察值的旧值的功能。
请参阅下面的RxMarbles,了解我想要完成的工作:
我尝试使用shareReplay(N)
,如下面的代码所示,但这似乎无法解决问题。
let Observable1Replay = Observable1.share(replay: 1, scope: .forever)
let Observable2Replay = Observable2.share(replay: 1, scope: .forever)
let resultObservable = Observable3
.flatMapLatest { boolValue in
if boolValue == true {
return Observable1Replay
} else {
return Observable2Replay
}
}
我遇到了三个可观察值映射到结果流的情况。第一个可观察值告诉我应该从其他两个可观察值中选择哪个值。在第一个...的每个发射上...
当您遇到困难时,总是可以自己翻滚,以后再回来: