Что такое функция concatMap

«Что такое функция concatMap» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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