Ответ
concatMap — оператор преобразования в RxJava, который применяет функцию к каждому элементу потока и объединяет результаты в один последовательный поток. В отличие от flatMap, он сохраняет порядок элементов.
Observable.just(1, 2, 3)
.concatMap { number ->
Observable.just("A$number", "B$number").delay(100, TimeUnit.MILLISECONDS)
}
.subscribe { println(it) }
Вывод будет строго по порядку: A1, B1, A2, B2, A3, B3. Если задержки разные, concatMap дождётся завершения предыдущего Observable перед обработкой следующего. Полезен, когда важен порядок или нужно избежать перегрузки (например, для последовательных сетевых запросов).