我有一个ViewController,在init()中我使用PublishSubject创建一个热流.然后我使用viewDidLoad()中的stream.asObservable()将流传递给我的viewmodel,因为viewmodel具有其他依赖项,这些依赖项是从视图生成的流,因此它必须等到视图的绑定完成才能创建viewmodel.在创建viewmodel之后,我将ViewController中的事件推送到流中,然后期望viewmodel通过触发异步请求(也已用Rx包装)来对事件做出反应.
视图控制器:
class ExampleViewController: ViewController { .... private let exampleStream: PublishSubject<Bool> init() { self.exampleStream = PublishSubject<Bool>() } viewDidLoad() { self.viewmodel = viewmodelFactory.create(exampleStream.asObservable()) self.exampleStream.onNext(true) } .... }
视图模型:
class Exampleviewmodel { init(stream: Observable<Bool>) { stream.flatMap { _ in doSomethingAsyncThatReturnsAnObservable() } } private func doSomethingAsyncThatReturnsAnObservable() -> Observable<CustomObject> { ... } }
我的问题是当流中只有一个事件时,doSomethingAsyncThatReturnsAnObservable()被调用两次.我用var count = 1检查了这个事实; stream.subscribeNext {_ in print(count)},打印1.
任何想法为什么subscribeNext()在每个事件上触发一次但flatMap()会触发两次?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。