我正在尝试在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
永远不会被调用。为什么不呢?
答案 0 :(得分:1)
您正在使用Observable<BehaviorRelay<Int>>
运算符创建from
,该运算符仅发出一个值(行为继电器本身),然后完成。 accept
调用被忽略,因为没有任何预订行为中继本身。
我认为您需要退后一步,弄清楚自己要完成的工作,然后阅读操作员的文档以找到可以满足您需要的人。