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
调用被忽略,因为没有任何内容订阅行为中继本身
我认为您需要后退一步,找出您想要完成的任务,然后阅读有关操作员的文档,找到一个能够满足您需要的任务。您所说的“永不执行”是什么意思。你期望发生什么和发生了什么?在第一部分,这确实提供了答案。我认为你过于专注于评论,而这实际上没有意义,以至于没有注意到第一部分说的是发布的代码的实际行为。我删除了对代码的批评,并扩展了答案。