Flow операторы — это функции, используемые для трансформации, фильтрации и объединения асинхронных потоков данных в Kotlin. Они позволяют строить реактивные конвейеры, которые эффективно обрабатывают данные.
map — трансформирует каждый элемент в новое значениеflatMapConcat — разворачивает вложенные flow последовательно, один за другимflatMapLatest — разворачивает вложенные flow, отменяя предыдущий при появлении нового значенияflow.map { value -> value * 2 }
flow.flatMapLatest { id -> fetchData(id) }
filter — пропускает только элементы, соответствующие заданному условиюdistinctUntilChanged — пропускает последовательные дубликаты, сокращая ненужные обновленияdebounce — подавляет быстрые срабатывания, пропуская значение только после периода тишины (полезно для поиска)flow.filter { it > 0 }
flow.distinctUntilChanged()
flow.debounce(300)
zip — объединяет два flow, сопоставляя их элементы один-к-одному в одно значениеflow1.zip(flow2) { a, b -> "$a $b" }
retry — автоматически переподписывается на flow при возникновении исключения; полезно для сетевых запросовflow.retry(3) { cause -> cause is IOException }
collect — финальный оператор, который запускает flow и получает значения; без него данные не обрабатываютсяflow.collect { value -> println(value) }
Flow операторы компонуемы и ленивы — они выполняются только при вызове терминального оператора, например collect, что делает их эффективными для построения чистых реактивных конвейеров.
Flow-операторы вычисляются лениво и выполняются только когда вызывается терминальный оператор, такой как collect.
Новый — ещё не проверен сообществом
Вы