Выбор ответа 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.
Варианты ответа
DefaultMainIOправильный ответ- Зависит от того, где вызван
flowOf
Разбор
flowOn меняет контекст только для операторов выше себя (upstream) до ближайшего другого flowOn. map стоит сразу над flowOn(IO), поэтому выполняется на IO. filter находится между двумя flowOn и выполняется на Default. Сам collect остаётся в контексте коллектора, на Main.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.