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) }
4

1 回答 1

3

发布主题仅在订阅后发出项目。如果您希望所有订阅都获得所有排放,请尝试更改为 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()
于 2019-12-18T20:42:38.157 回答