PublishSubject不发出项目

问题描述 投票:0回答:1

为什么下面的代码不发出任何结果?此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个回答
0
投票

发布主题仅在订阅后发出项目。如果希望所有订阅都获得所有发射,请尝试更改为ReplaySubject,如果希望进行订阅时希望最后一个发射,则尝试更改为BehaviourSubject。

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()
© www.soinside.com 2019 - 2024. All rights reserved.