链接和映射 Kotlin 流程

Chaining and mapping kotlin flow

我正在尝试从流中获取结果,该流从房间数据库中检索列表,然后尝试将该列表与另一个数据库操作中的另一个流映射,但我不知道它是否是可以的,如果是的话,怎么做,目前我正在尝试做这样的东西

fun retrieveOperationsWithDues(client: Long): Flow<List<ItemOperationWithDues>> {
    return database.operationsDao.getOperationCliente(client)
        .flatMapMerge {
            flow<List<ItemOperationWithDues>> {
                it.map { itemOperation ->
                    database.duesDao.cuotasFromOperation(client, itemOperation.id).collectLatest { listDues ->
                        itemOperation.toItemOperationWithDues(listDues)
                    }
                }
            }
        }
}

但看起来没有从收集中检索任何内容。感谢您提供任何帮助的建议

我认为您不需要在 flatMapMerge 块中使用 flow 生成器。对于每个 itemOperation,您可以从 Dao 中调用 cuotasFromOperatio() 函数,returns Flow 并使用 combine() 组合检索到的流:

fun retrieveOperationsWithDues(client: Long): Flow<List<ItemOperationWithDues>> {
    return database.operationsDao.getOperationCliente(client)
        .flatMapMerge {
            val flows = it.map { itemOperation ->
                database.duesDao.cuotasFromOperation(client, itemOperation.id).map { listDues ->
                    itemOperation.toItemOperationWithDues(listDues)
                }
            }
            combine(flows) { flowArray -> flowArray.toList() }
        }
}