Чем отличаются методы flatMap и switchMap в реактивном программировании?

В реактивном программировании методы flatMap и switchMap используются для преобразования и управления потоками данных, но имеют разные семантики:

Короткий ответ

Что ответить на собеседовании

В реактивном программировании методы flatMap и switchMap используются для преобразования и управления потоками данных, но имеют разные семантики:

Подробный разбор

Ответ с пояснениями

В реактивном программировании методы flatMap и switchMap используются для преобразования и управления потоками данных, но имеют разные семантики:

  • flatMap: для каждого входящего элемента создает новый внутренний поток и объединяет все эти потоки в один. Все внутренние потоки работают параллельно, и результаты из них могут приходить в любом порядке.
  • switchMap: при получении нового элемента отменяет (отписывается от) предыдущий внутренний поток и переключается на новый. Таким образом, всегда активен только один внутренний поток — последний.

Пример на Kotlin с RxJava:

observable.flatMap { value ->
    someAsyncOperation(value) // возвращает Observable
}

observable.switchMap { value ->
    someAsyncOperation(value) // предыдущий вызов отменяется при новом значении
}

Используйте flatMap, когда хотите обрабатывать все запросы параллельно, а switchMap — когда нужно игнорировать старые запросы при появлении новых (например, при поиске с автодополнением).

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку