当我创建5个可观察对象并通过单独的订阅者订阅它们时,凭直觉,我认为每个订阅者都将获取其onobserv()调用发出的其可观察对象的对应数据:
val compositeSubscription = CompositeDisposable()
fun test() {
for (i in 0..5) {
compositeSubscription.add (Observable.create<String>(object : ObservableOnSubscribe<String> {
override fun subscribe(emitter: ObservableEmitter<String>) {
emitter.onNext("somestring")
emitter.onComplete()
}
}).subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
Logger.i("testIt onNext")
}, {
Logger.i("testIt onError")
}))
}
}
但是,我看到的是日志中的一两个“ testIt onNext”。
现在,当我在订户的onNext()中添加延迟时,将调用所有6个订户的onNext()。
当某些订户的速度不足以赶上他们的数据时,这似乎是一种不道德的情况。发生这种情况的方式让我回避了,因为应该在Subscriber启动并运行后调用subscribe()。
对此表示感谢。
答案 0 :(得分:2)
从此代码来看,每个订阅者都应打印“ testIt onNext”。您确定没有打印出来吗?也许Android Studio正在崩溃相同的行?您是否尝试过为每个订阅者打印不同的内容?