Middle
66
questionbank

Какие существуют операторы в Flow?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Вот основные операторы Flow, сгруппированные по категориям:

Преобразование:

  • map: Применяет функцию преобразования к каждому значению.
  • filter: Отфильтровывает значения, не соответствующие предикату.
  • take: Берет только первые N значений.
  • drop: Пропускает первые N значений.
  • transform: Более гибкий оператор для преобразования из одного Flow в другое, излучая ноль или более значений для каждого входящего значения.

Комбинирование:

  • zip: Объединяет значения двух Flow попарно.
  • combine: Комбинирует последние значения двух Flow.
  • merge: Объединяет значения из нескольких Flow в один.

Сглаживание (Flattening):

  • flattenConcat: Объединяет Flow из Flow, последовательно обрабатывая внутренние Flow.
  • flattenMerge: Объединяет Flow из Flow, параллельно обрабатывая внутренние Flow (с ограничением concurrency).

Обработка исключений:

  • catch: Перехватывает исключения и выполняет действие или возвращает аварийное значение.
  • retry: Повторяет Flow при возникновении исключения.

Терминальные операторы:

  • collect: Собирает все значения из Flow.
  • reduce: Агрегирует значения Flow в одно.
  • toList: Преобразует Flow в список.
  • first: Берет только первое значение.
  • single: Берет единственное значение (выбрасывает исключение, если значений больше одного).

Операторы времени (часто из kotlinx.coroutines.flow.operators):

  • debounce: Излучает значение только после паузы в излучении.
  • sample: Излучает последнее значение через интервал времени.
  • throttle: Ограничивает скорость излучения значений.

Пример использования map:

kotlin

Пример использования filter:

kotlin

Пример использования zip:

kotlin