如何观察两个 rx 序列并订阅两个闭包参数?

How do I observe two rx sequences and subscribe with two closure arguments?

我想用一个 observer 观察两个 behaviorRelays,等待两个 relays 发出它们的值,然后在 subscription 中有两个单独的 closure arguemts,每人一个relay。像这样:

let one = firmwareService.basicIODeviceUnit.compactMap { [=10=]?.canBeUpdated }
let two = firmwareService.motorDeviceUnit.compactMap { [=10=]?.canBeUpdated }
        
Observable.of(one, two).flatMap{ [=10=] }.subscribe(onNext: { a, b in
    print("--", a, b)
}).disposed(by: disposeBag)

不允许使用以上代码。 mergezip 等运算符似乎将两个继电器捆绑到一个闭包参数中,所以我猜它们不会起作用。我用什么?

我已经浏览过这个线程,所以它应该是可能的,但我无法绕过它,因为我使用 swift RxJS Subscribe with two arguments

你可以使用 combineLatest:

combineLatest 是您希望在值取决于其他一些 Observable 的组合时使用的运算符。 当一个项目被两个 Observable 中的任何一个发射时,通过指定的闭包组合每个 Observable 发射的最新项目,并根据这个闭包的结果发射项目。

作为参考,请遵循此 - combineLatest meduim link

我不确定你的意思,因为 zip 完全符合你的要求。 combineLatest.

也是
let one = firmwareService.basicIODeviceUnit.compactMap { [=10=]?.canBeUpdated }
let two = firmwareService.motorDeviceUnit.compactMap { [=10=]?.canBeUpdated }

Observable.zip(one, two)
    .subscribe(onNext: { a, b in
        print("--", a, b)
    })
    .disposed(by: disposeBag)