web-dev-qa-db-fra.com

Recueillir de plusieurs flux d'extrémité

J'ai 2 flux d'état dans mon viewModel. Pour les collecter en fragment, je dois lancer Coroutines 2 fois comme ci-dessous:

    lifecycleScope.launchWhenStarted {
        stocksVM.quotes.collect {
            if (it is Resource.Success) {
                it.data?.let { list ->
                    quoteAdapter.submitData(list)
                }
            }
        }
    }

    lifecycleScope.launchWhenStarted {
        stocksVM.stockUpdate.collect {
            log(it.data?.data.toString())
        }
    }

Si j'ai plus de flux d'état, je dois lancer des corouts respectivement. Y a-t-il une meilleure façon de gérer plusieurs flux d'état dans mon fragment/activité ou où?

5
Azim Salimov

Si quelqu'un se demande comment émettre plusieurs flux dans le même bloc de viewModelScope.launch, c'est la même chose que la réponse de Robert. I.e comme suit

viewModelScope.launch {
    launch {
        exampleFlow1.emit(data)
    }
    launch {
        exampleFlow2.emit(data)
    }
}
1
Rawlin Crasto