Sobes.tech
Назад к вопросам
Junior — Middle
89

Можете объяснить назначение и работу оператора switchMap в библиотеке RxJava?

Компании, где спрашивали
Rostic's

Ответ от нейросети

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 помогает избежать гонок и устаревших данных, переключаясь на новый поток и отписываясь от старого.