Вопрос оценивает реальный опыт работы с RxSwift и понимание обработки потоков данных.
Чаще всего используются операторы трансформации, фильтрации и комбинирования. Они позволяют изменять данные, отбрасывать лишние события и объединять несколько потоков. На практике это map, filter, flatMap, combineLatest и debounce. Эти операторы покрывают большинство сценариев работы с UI и сетью.
RxSwift предоставляет набор операторов для управления потоками данных. Обычно в проектах используется ограниченный, но универсальный набор.
Они изменяют данные внутри потока:
map
flatMap
Пример:
observable
.map { $0.count }
Используются для отбрасывания ненужных событий:
filter
distinctUntilChanged
debounce
Пример:
textObservable
.debounce(.milliseconds(300), scheduler: MainScheduler.instance)
Позволяют объединять несколько потоков:
combineLatest
zip
withLatestFrom
Пример:
Observable.combineLatest(a, b)
Операторы применяются для:
валидации ввода
запросов к API
биндинга состояния экрана
управления пользовательскими событиями
Знание базовых операторов RxSwift покрывает большую часть реальных задач и позволяет писать компактный и понятный реактивный код.