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