【发布时间】:2021-05-16 06:17:51
【问题描述】:
我有几个completable rx subscriptions 在这样的流中:
viewModel?.setupDoorMode().subscribe(onNext: { shouldConnectToDoor in
if shouldConnectToDoor {
self.viewModel?.connectAndOpenDoor().subscribe(onCompleted: {
self.viewModel?.openOrCloseDoor().subscribe().disposed(by: self.disposeBag)
}).disposed(by: self.disposeBag)
} else {
self.viewModel?.openOrCloseDoor().subscribe().disposed(by: self.disposeBag)
}
}).disposed(by: disposeBag)
我觉得这可以用更好的方式完成,比如将流平面映射到另一个流中。但是当我尝试使用flatMap 时,我得到了错误Type '()' cannot conform to 'ObservableConvertibleType'; only struct/enum/class types can conform to protocols。我对rx 不太熟悉,无法理解该消息。无论如何,有没有办法创建一个看起来更流畅的流而不是连续三个subscriptions?
【问题讨论】:
-
你为什么要订阅
setupDoorMode的 onNext 内的其他主题/中继 经验法则是,如果你必须订阅 onNext 块内的其他主题,你已经搞砸了设计和有更好的设计来处理 -
@SandeepBhandari 是的,这正是我所要求的。我该如何以“正确”的方式做到这一点。
标签: ios swift rx-swift flatmap