У меня есть ситуация, когда у меня есть три наблюдаемые, которые отображаются в поток результатов.
Первая наблюдаемая говорит мне, из каких двух других наблюдаемых мне следует принимать значения. При каждом излучении первой наблюдаемой поток результатов переключается на излучение плоской карты соответствующей наблюдаемой.
Эту ситуацию обычно можно выполнить с помощью flatMapLatest
.
Однако при каждый переключатель flatMap, я также хочу воспроизвести последнее устаревшее значение. Это проблема, потому что flatMapLatest
не предоставляет возможности для воспроизведения старых значений существующих наблюдаемых.
См. Ниже RxMarbles того, что я хочу сделать sh:
![RxMarbles](https://i.stack.imgur.com/UsEKk.png)
Я пытался использовать 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
}
}