В чем разница между flatMapLatest и flatMapMerge

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

Ответ

flatMapLatest и flatMapMerge — операторы для обработки потоков в Kotlin Flow/RxJava.

flatMapLatest:

  • Отменяет предыдущую корутину/задачу при поступлении нового элемента.
  • Полезен для поиска (например, отмена предыдущего запроса при новом вводе).
searchFlow.flatMapLatest { query -> 
    api.search(query)
}

flatMapMerge:

  • Запускает все корутины параллельно и объединяет результаты по мере завершения.
  • Подходит для независимых задач (например, загрузка нескольких файлов).
idsFlow.flatMapMerge(concurrency = 3) { id -> 
    api.fetchData(id)
}