Junior — Middle
Poți explica scopul și modul de funcționare al operatorului switchMap în biblioteca RxJava?
sobes.tech AI
Răspuns de la AI
Оператор switchMap в RxJava используется для преобразования элементов исходного Observable в новый Observable и переключения на него, при этом отменяя подписку на предыдущий внутренний Observable. Это особенно полезно, когда нужно работать с потоками, где важна актуальность данных, например, при поисковых запросах, где каждый новый запрос отменяет предыдущий.
Пример: пользователь вводит текст, и для каждого изменения запускается запрос к серверу. switchMap гарантирует, что результат будет только от последнего запроса, а предыдущие отменятся.
Observable<String> searchQueryObservable = ...;
searchQueryObservable
.switchMap(query -> api.search(query)) // api.search возвращает Observable<Result>
.subscribe(result -> {
// обработка результата последнего запроса
});
Таким образом, switchMap помогает избежать гонок и устаревших данных, переключаясь на новый поток и отписываясь от старого.