RxSwift:compactMap从未执行

时间:2019-12-03 01:01:26

标签: swift rx-swift behaviorrelay

我正在尝试在compactMap上实现RxSwift,但似乎从未执行过。

这是我的代码:

class MyClass{

    var disposeBag = DisposeBag()
    let subject = BehaviorRelay(value: 1)

    func doSomething() {
        Observable.from(optional: subject).compactMap{  $0

        }.subscribe( onNext:{
            print($0)
        }).disposed(by: disposeBag)
        subject.accept(2)
        subject.accept(4)
        subject.accept(5)
        subject.accept(8)
    }
}

当我更改subject上的值时,compactMap永远不会被调用。为什么不呢?

1 个答案:

答案 0 :(得分:1)

您正在使用Observable<BehaviorRelay<Int>>运算符创建from,该运算符仅发出一个值(行为继电器本身),然后完成。 accept调用被忽略,因为没有任何预订行为中继本身。

我认为您需要退后一步,弄清楚自己要完成的工作,然后阅读操作员的文档以找到可以满足您需要的人。