RxSwift:compactMap从未执行过

RxSwift:compactMap从未执行过,swift,rx-swift,behaviorrelay,Swift,Rx Swift,Behaviorrelay,我试图在RxSwift上实现compactMap,但似乎从未执行过 这是我的密码: class MyClass{ var disposeBag = DisposeBag() let subject = BehaviorRelay(value: 1) func doSomething() { Observable.from(optional: subject).compactMap{ $0 }.subscribe( onNext:{

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

这是我的密码:

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
永远不会被调用。为什么不呢?

您正在使用
from
操作符创建一个
可观察的
,该操作符只发出一个值(行为继电器本身),然后完成。
accept
调用被忽略,因为没有任何内容订阅行为中继本身


我认为您需要后退一步,找出您想要完成的任务,然后阅读有关操作员的文档,找到一个能够满足您需要的任务。

您所说的“永不执行”是什么意思。你期望发生什么和发生了什么?在第一部分,这确实提供了答案。我认为你过于专注于评论,而这实际上没有意义,以至于没有注意到第一部分说的是发布的代码的实际行为。我删除了对代码的批评,并扩展了答案。