FlatMapLatest with Replay

问题描述 投票:1回答:1

我遇到了三个可观察值映射到结果流的情况。

第一个可观察变量告诉我应该从其他两个可观察变量中取值。在每次发射第一个可观察到的对象时,结果流都切换为发出适当的可观察到的平面图。

这种情况通常可以通过flatMapLatest完成。

但是,在flatMap的每个开关上,我也都想重播最新的陈旧值。这是一个问题,因为flatMapLatest不提供重放现有可观察值的旧值的功能。

请参阅下面的RxMarbles,了解我想要完成的工作:

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
            }
        }

我遇到了三个可观察值映射到结果流的情况。第一个可观察值告诉我应该从其他两个可观察值中选择哪个值。在第一个...的每个发射上...

rx-swift
1个回答
0
投票

当您遇到困难时,总是可以自己翻滚,以后再回来:

© www.soinside.com 2019 - 2024. All rights reserved.