首页 > 解决方案 > 在 LivedataCouroutine Builder 中组合多个调用

问题描述

所以,现在我需要使用 viewModelScope 来在我的 livedata 协程构建器中执行异步等待操作,这工作正常,但我正在寻找一种更简洁的方法来执行所有这些获取的异步等待,而无需范围对视图模型的调用,有没有更好的方法?

 fun initView() = liveData(Dispatchers.Main) {
        emit(States.Loading())
        kotlin.runCatching {

            val call1 = viewModelScope.async { repo.call1() }
            val call2 = viewModelScope.async { repo.call2() }
            val call3 = viewModelScope.async { repo.call3() }
            val call4 = viewModelScope.async { repo.call4() }
            val call5 = viewModelScope.async { repo.call5() }
            val call6 = viewModelScope.async { repo.call6() }

            // We then get result data
            val call1Result = call1.await()
            val call2Result = call2.await()
            val call3Result = call3.await()
            val call4Result = call4.await()
            val call5Result = call5.await()
            val call6Result = call6.await()
         
          MyDataClass(call1,call2,call3,call4,call5,call6)
          
        }.onSuccess { myViewData ->
            ...
        }.onFailure { throwable ->
            ...
        }
    }

在 liveData 协程块中是否有更好的方法来执行并行请求并让它们创建最后一个数据类结果?

标签: androidkotlinandroid-livedataandroid-architecture-components

解决方案


推荐阅读