我想将多个observable连接到一个共同的Subject . 可以处置可观察量,并且将创建新的可观察量并由同一主体订阅 .
我创建并删除了几个自定义UIViews,每个UIViews都包含发送到同一Subject的Observers .
例如:在myView1中,我有:
myButton1.rx.tap
.subscribe(sameViewModel.subject)
.disposed(by: disposeBag1)
在myView2中,我有:
myButton2.rx.tap
.subscribe(sameViewModel.subject)
.disposed(by: disposeBag2)
在这个简单的示例中,sameViewModel.subject与实例(sameViewModel)中的PublishSubject相同,当myView1和myView2被删除时,它不会进行解除初始化 .
当myView1被删除时,它的disposeBag1被释放,myButton1.rx.tap会发出onComplete和onDispose通知 . 这导致sameViewModel.subject也完成并处置 . 主题不再响应myButton2.rx.tap或我后来创建的其他可观察对象的其他事件 .
How do I create/configure a observer-subject relationship where the subject stays active while its observers are disposed?
主题是否可以配置为忽略完整/处置事件?我是否需要重写.subscribe以单独处理onNext,onComplete等?是否有一些模式可以遵循?
1 回答
你需要将两个点击可观察量
merge
放入一个observable然后订阅它 . 合并的observable在其所有组件可观察量完成或出错之前不会完成 .由于您评论这些按钮来来往往,您可能需要使用
flatMap
. 导致视图出现的函数需要发出tap可观察对象 . 父母可观察到的孩子也是如此,但在这种情况下,它的子女是动态生成的 .