Выбор ответа Middle Flow, StateFlow и SharedFlow обновлено

Что делает flowOn

Вопрос

На каком диспетчере выполнится map в этой цепочке, если collect вызван на Main?

source
    .map { parse(it) }
    .flowOn(Dispatchers.IO)
    .filter { it.isValid }
    .flowOn(Dispatchers.Default)
    .collect { render(it) }

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: IO. flowOn меняет контекст только для операторов выше себя (upstream) до ближайшего другого flowOn. map стоит сразу над flowOn(IO), поэтому выполняется на IO. filter находится между двумя flowOn и выполняется на Default.

Варианты ответа

  1. Default
  2. Main
  3. IOправильный ответ
  4. Зависит от того, где вызван flowOf

Разбор

flowOn меняет контекст только для операторов выше себя (upstream) до ближайшего другого flowOn. map стоит сразу над flowOn(IO), поэтому выполняется на IO. filter находится между двумя flowOn и выполняется на Default. Сам collect остаётся в контексте коллектора, на Main.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.