Junior — Middle
In what cases and with what dispatcher can map, filter, and single operations be performed inside Flow?
sobes.tech AI
Answer from AI
The map, filter, and single operations inside Kotlin Flow are executed in the same context (dispatcher) in which the Flow is launched, unless another dispatcher is explicitly specified.
- By default, they are executed in the same CoroutineDispatcher as the upstream Flow.
- If you need to change the dispatcher for these operations, you use the
flowOnoperator, which changes the execution context of upstream operations.
Example:
flowOf(1, 2, 3)
.map { it * 2 } // executed in the original dispatcher
.filter { it > 2 }
.flowOn(Dispatchers.IO) // upstream operations (map, filter) will run in IO
.single() // terminal operator, executed in the context of the calling coroutine
Thus, the map, filter, and single operations can be executed in any dispatcher, but most often map and filter are executed in the dispatcher specified via flowOn, while single runs in the context of the calling coroutine.