我已经实现了compactMap
BehaviorRelay
,它工作得很好:
class MyClass{
let subject = BehaviorRelay(value: 1)
func doSomething() {
subject.compactMap{ $0 }.subscribe(onNext:{
print($0)
}).disposed(by: disposeBag)
}
我的问题是,如果出于某种原因我想取消/停止BehaviorRelay
。有一种方法可以取消/停止compactMap
?
compactMap
运算符在此代码中不执行任何操作。只需将其删除即可。
直接回答您的问题。可观察链(从源到订阅的整个代码(将继续存在,直到源发出已完成/错误事件或接收器调用在一次性对象上释放。在这种情况下,BehaviorRelay无法完成或出错,因此关闭链的唯一方法是调用dispose((,它将关闭整个链。