I have both codes below, and the result looks the same for me
val namesFlow = flow {
println("Start flow")
(0..10).forEach {
// Emit items with 500 milliseconds delay
delay(500)
println("Emitting $it")
emit(it)
}
}.map { it * it }
fun main() = runBlocking {
namesFlow.collect { println(it) }
namesFlow.collect { println(it) }
println("Finish Flow")
}
and
val namesFlow = channelFlow {
println("Start flow")
(0..10).forEach {
// Emit items with 500 milliseconds delay
delay(500)
println("Emitting $it")
send(it)
}
}.map { it * it }
fun main() = runBlocking {
namesFlow.collect { println(it) }
namesFlow.collect { println(it) }
println("Finish Flow")
}
What's the difference between flow
and channelFlow
?