Ответ
switchMap — оператор в RxJava, преобразующий элементы потока в новые Observable, но отменяет предыдущие подписки при поступлении новых элементов. Полезен для сценариев, где важна только последняя активность (например, поиск с отменой предыдущих запросов).
Пример:
searchObservable
.switchMap { query ->
api.search(query) // Отменяет предыдущий запрос при новом поиске
}
.subscribe { results ->
// Обновляет UI только для последнего запроса
}
Ключевые особенности:
- Отменяет предыдущие подписки, предотвращая утечки.
- Гарантирует обработку только последнего значения.
- Не сохраняет порядок выполнения, если новые элементы приходят быстрее, чем завершаются старые запросы.
Альтернативы: flatMap (параллельные запросы), concatMap (сохраняет порядок).