lifeCycleScope.launch {
viewModel.oneItem.collect {
println("one")
}
viewModel.twoItem.collectLatest {
println("two")
}
}
I tried this code, but it only print 'one' and it seems like second collectLatest doesn't work. Why is that?
CodePudding user response:
The first collect
function is a suspend
function, it suspends current coroutine until all items are collected. If viewModel.oneItem
is infinite then it will never go to the executing of viewModel.twoItem.collectLatest
function. To invoke both functions in this case two coroutines must be launched:
lifeCycleScope.launch {
launch {
viewModel.oneItem.collect {
println("one")
}
}
launch {
viewModel.twoItem.collectLatest {
println("two")
}
}
}