如何在RxSwift中使用flatMap观察较高的Observable?

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

mapflatMapRxSwift之间的差异已得到说明。现在,我想观察内部可观察对象发生变化时的上部可观察实例。 我该怎么办?

让我们看一下示例,

here

在上面的示例中,输出为,

func testFlatMap() {

    let bag = DisposeBag()

    struct Player {
        var age: Int
        var score: BehaviorSubject<Int>
    }

    let male = Player(age: 28, score: BehaviorSubject(value: 80))

    let player = PublishSubject<Player>()

    player.asObservable()
        .flatMap { $0.score.asObservable() }
        .subscribe(onNext: { print($0) })
        .disposed(by: bag)

    player.on(.next(male))
    male.score.on(.next(100))
}

如预期。但是我想知道订阅块80 100 中完整的Player对象状态(即播放器的age),但它只获取.subscribe(onNext: { print($0) })我该怎么做?

我的预期输出是,

score
ios swift reactive-programming rx-swift flatmap
1个回答
0
投票

您从Player (where I can access both age:28 and score:80) Player (where I can access both age:28 and score:100) 返回可观察到的分数。相反,您想返回可观察的玩家信息。您可以通过使用其他flatMap运算符并在播放器自变量上方加上年龄,将年龄附加到得分上:

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