【发布时间】:2018-02-07 23:10:47
【问题描述】:
我偶然发现了一些我无法解释的令人费解的行为。我从一个更大的 rx 链中提炼出下面的例子,所以不要惊讶为什么我会这样做。我只是想了解为什么会这样! :)
enum class Request {
Request1,
Request2
}
fun main(args: Array<String>) {
val requestStream = PublishSubject.create<Request>()
val stateChanges = requestStream.share()
stateChanges
.delaySubscription(requestStream)
.subscribe({ println("received $it") })
// Comment this and it changes the output!
stateChanges.subscribe()
requestStream.onNext(Request.Request1)
requestStream.onNext(Request.Request2)
}
所以。如果你运行上面的程序,它会打印:
received Request1
received Request2
但是如果你评论stateChanges.subscribe(),突然Request1 会丢失并且它只打印这个:
received Request2
你能解释一下吗?
另外我想知道即使没有额外的subscribe(),上述设置是否可以同时发出这两个项目。
【问题讨论】:
标签: rx-java reactive-programming rx-java2