0

我已经实施compactMapBehaviorRelay,它工作得很好:

class MyClass{

    let subject = BehaviorRelay(value: 1)

    func doSomething() {
        subject.compactMap{ $0 }.subscribe(onNext:{
            print($0)
        }).disposed(by: disposeBag)
    }

我的问题是,如果出于某种原因我想取消/停止BehaviorRelay. 有办法取消/停止compactMap吗?

4

1 回答 1

0

操作员在compactMap这段代码中什么都不做。只需将其删除。

直接回答你的问题。一个可观察的链(从源到订阅的整个代码)将一直持续到源发出完成/错误事件或接收器在一次性设备上调用 dispose。在这种情况下,BehaviorRelay 无法完成或出错,因此关闭链的唯一方法是调用 dispose(),它将关闭整个链。

于 2019-12-03T22:34:42.330 回答