如何解决您如何在存储库级别将多个流值作为对象发出?
假设我有两个流程:
val x: Flow<Long?> = dao.getValueX()
val y: Flow<Long?> = dao.getValueY()
我可以有第三个流,流 z
将这两个成对发出吗?
假设我有 XYObject()
,其中 XYObject 看起来像
X: Long?
Y: Long?
我想基本上发出一个 z
流,它发出 XYObject
并从上面的两个流中填充 X 和 Y。我实际上有 3-4 个想要发出的东西,但为了示例起见,将其保留为两个。
解决方法
您可以使用 combine()
变换函数:
返回一个 Flow,其值由变换函数生成 结合每个流最近发出的值。
并像这样定义 z
:
import kotlinx.coroutines.flow.combine
data class XYObject(val x: Long?,val y: Long?)
val x: Flow<Long?> = dao.getValueX()
val y: Flow<Long?> = dao.getValueY()
val z: Flow<XYObject> = x.combine(y) { _x: Long?,_y: Long? ->
XYObject(_x,_y)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。