Назад к вопросам
Совкомбанк
Junior — Middle
66
В каких случаях и с каким диспатчером могут выполняться операции map, filter и single внутри Flow?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Операции map, filter и single внутри Kotlin Flow выполняются в том же контексте (диспатчере), в котором запущен Flow, если явно не указан другой диспатчер.
- По умолчанию они выполняются в том же CoroutineDispatcher, что и upstream Flow.
- Если нужно изменить диспатчер для этих операций, используют оператор
flowOn, который меняет контекст выполнения upstream операций.
Пример:
flowOf(1, 2, 3)
.map { it * 2 } // выполняется в исходном диспатчере
.filter { it > 2 }
.flowOn(Dispatchers.IO) // upstream операции (map, filter) выполнятся в IO
.single() // terminal оператор, выполняется в контексте вызывающего корутины
Таким образом, операции map, filter и single могут выполняться в любом диспатчере, но чаще всего map и filter выполняются в диспатчере, заданном через flowOn, а single — в контексте вызывающей корутины.