链接和映射 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() }
}
}
我正在尝试从流中获取结果,该流从房间数据库中检索列表,然后尝试将该列表与另一个数据库操作中的另一个流映射,但我不知道它是否是可以的,如果是的话,怎么做,目前我正在尝试做这样的东西
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() }
}
}