首页 > 解决方案 > Kotlin 流转换在与另一个运算符后跟时不会发出结果

问题描述

我有一个以下 Kotlin 流程,我需要做的是从 getUseCase.getResult() 发出值,然后启动另一个依赖于 getResults() 的流程并发出更多值。getContentUseCase.getContent().transform 中的代码按预期执行并发出值,但是 getUseCase.getResult().transform 中的值永远不会发出。

但是,当我删除 flatMapConcat 运算符及其内容时,我会获取从 getUseCase.getResult().transform 发出的值。不知道发生了什么,但我怎样才能在两个流程中进行工作发射?

getUseCase.getResult().transform { response ->
  when (response.networkState) {
    NetworkState.Success -> {
      val contentList = response.contentList
      val result = ResultDomainModel(networkState = NetworkState.Success,
                                                                       contentList = contentList)
      emit(smartSearchContentListResult)
    }
    else -> emit(ResultDomainModel(networkState = contentListResponse.networkState))
  }
}.flatMapConcat { response ->
  val contentList = response.contentList
  val contentItemList = arrayListOf<SmartSearchContentDomainModel>()
  contentList.withIndex().asFlow().map { content ->
    getContentUseCase.getContent().transform { contentResponse ->
      contentItemList[content.index] = contentResponse
      emit(ResultDomainModel(networkState = NetworkState.Success,
                                         contentList = contentList,
                                         contentItems = contentItemList))

    }

标签: androidkotlinkotlin-flow

解决方案


推荐阅读