// Perform everything on a background thread using flowOn operator
fun simple(size: Int): Flow<Int> = flow {
for (i in 0..size) {
emit(i)
}
}.transform { it ->
emit(doSomethingLong(it))
}.flowOn(Dispatchers.Default)
fun main() {
runBlocking {
simple().collect { it ->
println(it) // Collect on main thread
}
}
}
1条答案
按热度按时间polhcujo1#
在您的情况下,您可以这样做:
注意,收集发生在调用协程的上下文中,因此,如果你想在不同的线程上进行收集,你可以指定它,例如,如下所示