a.a*_*ani 5 mvvm swift swift2 rx-swift
我有一个ViewController在我用它init()创建一个热流PublishSubject.然后我将流传递给我ViewModel使用stream.asObservable()的viewDidLoad(),因为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)
}
....
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
class ExampleViewModel {
init(stream: Observable<Bool>) {
stream.flatMap { _ in
doSomethingAsyncThatReturnsAnObservable()
}
}
private func doSomethingAsyncThatReturnsAnObservable() -> Observable<CustomObject> { ... }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是doSomethingAsyncThatReturnsAnObservable()当流中只有一个事件时被调用两次.我通过使用var count = 1; stream.subscribeNext { _ in print(count++) }哪些打印来检查这个事实1.
任何关于为什么subscribeNext()每次事件发生一次flatMap()火灾但两次火灾的想法?
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |