Когда я создаю 5 наблюдаемых и подписываюсь на каждую из них с отдельным подписчиком, я интуитивно думал, что каждый подписчик получит соответствующие данные своих наблюдаемых, отправленные с помощью вызова onNext ():
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 () получают вызов.
Похоже, что это довольно редкое условие, когда некоторые подписчики не достаточно быстры, чтобы догнать свои данные. То, как это происходит, ускользает от меня, так как подписка () должна вызываться после того, как подписчик запущен и работает.
Буду благодарен за любые советы по этому вопросу.