Craig
11/30/2022, 4:31 PM@Test
fun start() {
val sourceFlow = (0..20).asFlow()
val stateFlow = MutableStateFlow(mutableMapOf<String, Int>())
runBlocking {
stateFlow.asStateFlow().combine(sourceFlow) { state, number ->
println("got number $number")
state[(number % 2).toString()] = number
state
}
.take(20)
.collect { result -> println("got result $result") }
}
}
Craig
11/30/2022, 4:32 PMSam
11/30/2022, 4:32 PMCraig
11/30/2022, 4:34 PMSam
11/30/2022, 4:36 PMflow {
val state = mutableMapOf<Whatever>()
existingFlow.collect {
state.doStuff()
}
}.collect()
Sam
11/30/2022, 4:36 PMCraig
11/30/2022, 4:37 PMephemient
11/30/2022, 4:38 PMCraig
11/30/2022, 4:38 PMCraig
12/07/2022, 3:30 PMsupervisorScope {
// maintain a map of running jobs so that we can cancel them if needed.
val runningJobs = mutableMapOf<Event, Job>()
events.collect { event ->
runningJobs[event]?.cancel("previous job was cancelled due to new event $event")
runningJobs[event] = when (event) {
is EventOne -> handleEventOneAsync(event)
is EventTwo -> handleEvenTwoAsync(event)
is EventThree -> handleEventThreeAsync(event)
}
}
}