如何观察两个 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)
不允许使用以上代码。 merge
或 zip
等运算符似乎将两个继电器捆绑到一个闭包参数中,所以我猜它们不会起作用。我用什么?
我已经浏览过这个线程,所以它应该是可能的,但我无法绕过它,因为我使用 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)
我想用一个 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)
不允许使用以上代码。 merge
或 zip
等运算符似乎将两个继电器捆绑到一个闭包参数中,所以我猜它们不会起作用。我用什么?
我已经浏览过这个线程,所以它应该是可能的,但我无法绕过它,因为我使用 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)