Только первый элемент Flowable#concatMap в RxJava2 с наблюдаемым запуском запускается на конкретном планировщике
При использовании concatMap, как показано ниже, только первая выборка будет запущена из планировщика, все остальные вызовы выборки будут инициированы потоком обратного вызова предыдущей выборки.
* fetch
завершен асинхронный метод в другом потоке
Flowable<String> fetch(String item){
return Flowable.create(emitter -> {
new Thread(() -> {
emitter.onNext("foo");
emitter.onComplete();
}).start();
}, MISSING);
}
-
Flowable.fromIterable(list)
.observeOn(scheduler)
.concatMap(item -> fetch(item))
...
Если я изменю код, как показано ниже, все вызовы выборки будут запущены из планировщика.
Flowable.fromIterable(list)
.observeOn(scheduler)
.flatMap(item -> fetch(item))
...
Может быть, я могу сделать это как .concatMap(item -> fetch(item).subscribeOn(scheduler))
, но мне любопытно, если это ожидаемое поведение, которое наблюдается только на первый вызов.