【发布时间】:2020-05-05 14:43:07
【问题描述】:
我有一个包含多个订阅者的发布主题:
这是类:
class Real {
private val publisher: PublishSubject<String> = PublishSubject.create()
fun doPublish() {
for (i in 1 until 20) {
publisher.onNext("$i Hello")
}
publisher.onComplete()
}
fun doSubscribe() {
publisher.subscribe {
println("Subscriber1 $it")
}
publisher.subscribe {
println("Subscriber2 $it")
}
publisher.subscribe {
println("Subscriber3 $it")
}
}
}
在我打电话给doPublish()之前,我先打电话给doSubscribe()
输出如下:
Task :Main.main()
Subscriber1 1 Hello
Subscriber2 1 Hello
Subscriber3 1 Hello
Subscriber1 2 Hello
Subscriber2 2 Hello
Subscriber3 2 Hello
Subscriber1 3 Hello
Subscriber2 3 Hello
Subscriber3 3 Hello
Subscriber1 4 Hello
Subscriber2 4 Hello
Subscriber3 4 Hello
Subscriber1 5 Hello
Subscriber2 5 Hello
Subscriber3 5 Hello
Subscriber1 6 Hello
Subscriber2 6 Hello
Subscriber3 6 Hello
Subscriber1 7 Hello
Subscriber2 7 Hello
Subscriber3 7 Hello
Subscriber1 8 Hello
Subscriber2 8 Hello
Subscriber3 8 Hello
Subscriber1 9 Hello
Subscriber2 9 Hello
Subscriber3 9 Hello
Subscriber1 10 Hello
Subscriber2 10 Hello
Subscriber3 10 Hello
Subscriber1 11 Hello
Subscriber2 11 Hello
Subscriber3 11 Hello
Subscriber1 12 Hello
Subscriber2 12 Hello
Subscriber3 12 Hello
Subscriber1 13 Hello
Subscriber2 13 Hello
Subscriber3 13 Hello
Subscriber1 14 Hello
Subscriber2 14 Hello
Subscriber3 14 Hello
Subscriber1 15 Hello
Subscriber2 15 Hello
Subscriber3 15 Hello
Subscriber1 16 Hello
Subscriber2 16 Hello
Subscriber3 16 Hello
Subscriber1 17 Hello
Subscriber2 17 Hello
Subscriber3 17 Hello
Subscriber1 18 Hello
Subscriber2 18 Hello
Subscriber3 18 Hello
Subscriber1 19 Hello
Subscriber2 19 Hello
Subscriber3 19 Hello
根据上面的程序,第一个订阅者首先收到事件,然后是第二个和第三个,这完全按照订阅的顺序。
这个执行顺序有保证吗?因为我无法找到有关此的相关文档。
【问题讨论】:
标签: kotlin rx-java rx-java2 rx-kotlin2