Junior — Middle
Czy możesz opisać główne zimne strumienie (cold flows) w Coroutines i ich cechy?
sobes.tech AI
Odpowiedź od AI
Zimne strumienie (cold flows) w Kotlin Coroutines to strumienie, które zaczynają emitować dane dopiero po subskrypcji (collect). Do tego momentu nie wykonują żadnych obliczeń i nie zajmują zasobów.
Cechy zimnych strumieni:
- Lenistwo wykonania: kod wewnątrz flow uruchamia się tylko podczas subskrypcji.
- Wielokrotne subskrypcje powodują powtórne wykonanie kodu.
- Pozwalają opisywać sekwencje danych generowanych na żądanie.
Przykład zimnego strumienia:
val flow = flow {
println("Flow started")
emit(1)
emit(2)
}
fun main() = runBlocking {
println("Before collect")
flow.collect { value -> println(value) }
println("After collect")
}
Wynik będzie wyglądał tak:
Before collect
Flow started
1
2
After collect
To pokazuje, że kod wewnątrz flow uruchamia się tylko podczas collect.