Back to questions
Junior — Middle
90
Можете объяснить назначение и работу оператора switchMap в библиотеке RxJava?
Companies where asked
Rostic's
Answer from AI
sobes.tech AI
Оператор switchMap в RxJava используется для преобразования элементов исходного Observable в новый Observable и переключения на него, при этом отменяя подписку на предыдущий внутренний Observable. Это особенно полезно, когда нужно работать с потоками, где важна актуальность данных, например, при поисковых запросах, где каждый новый запрос отменяет предыдущий.
Пример: пользователь вводит текст, и для каждого изменения запускается запрос к серверу. switchMap гарантирует, что результат будет только от последнего запроса, а предыдущие отменятся.
Observable<String> searchQueryObservable = ...;
searchQueryObservable
.switchMap(query -> api.search(query)) // api.search возвращает Observable<Result>
.subscribe(result -> {
// обработка результата последнего запроса
});
Таким образом, switchMap помогает избежать гонок и устаревших данных, переключаясь на новый поток и отписываясь от старого.