是否存在一个可观测值或Rx运算符,它可以获取多个可观测值(多个流)并将它们一起显示在一个函数中,并且提供每个流的最新发射?我能找到的最接近的是CombineLast,但是只有在所有流都发出一个项目的情况下,它才起作用。如果我有4个可观察物,但只有3个发射了东西,那么我想查看其中的3个。如果这3个发射了一个持续不断的发射,但是另外两个在一段时间后没有发射任何东西,我仍然想查看那些2和不断发出的最新消息。
我不想要的是将所有流合并为一个的东西。它们必须保持分开。
答案 0 :(得分:0)
您可以将它们与combineLatest
结合使用,并提供一个将值包装到自定义类中的函数:
Observable.combineLatest(
source1,
source2,
source3,
source44,
Function4<String, String, String, String, LatestResult> { t1, t2, t3, t4 ->
LatestResult(t1, t2, t3, t4)
})
.subscribe { latestResult ->
// Access the latest results here:
println(latestResult.text1)
println(latestResult.text2)
println(latestResult.text3)
println(latestResult.text4)
}
}
data class LatestResult(val text1: String, val text2: String, val text3: String, val text4: String)
此示例假定所有可观察对象都发出字符串,但您可以轻松更改它。