【问题标题】:PublishSubject does not emit itemsPublishSubject 不发出项目
【发布时间】:2019-12-18 20:32:42
【问题描述】:
为什么下面的代码没有产生任何结果?这个Subject 出了什么问题?我希望在我订阅的那一刻得到一个结果,即我声明的长度。
val subject = PublishSubject.create<String>()//PublishRelay.accept() does not work as well
subject.onNext("Alpha"
subject.onNext("Beta")
subject.onNext("Gamma")
subject.onComplete()
subject.map{ it.length }
.subscribe { println(it) }
【问题讨论】:
标签:
android
rx-java
rx-java2
relay
publishsubject
【解决方案1】:
发布主题仅在订阅后发出项目。
如果您希望所有订阅都获得所有排放,请尝试更改为 ReplaySubject,如果您希望订阅时的最后一个排放,请尝试更改为 BehaviourSubject。
您可以在此处阅读有关不同类型主题的更多信息:
http://reactivex.io/documentation/subject.html
val subject = ReplaySubject.create<String>()/
subject.onNext("Alpha"
subject.onNext("Beta")
subject.onNext("Gamma")
subject.onComplete()
subject.map{ it.length }
.subscribe { println(it) }
或者,订阅,然后调用 onNext:
val subject = PublishSubject.create<String>()
subject.map{ it.length }
.subscribe { println(it) }
subject.onNext("Alpha"
subject.onNext("Beta")
subject.onNext("Gamma")
subject.onComplete()