如何跟踪可流动排放的数量?

时间:2019-02-22 23:57:07

标签: android rx-java rx-java2

比方说,我有一个流动对象,已订阅了某些视图,并且正在侦听更改。我想添加一个仅基于flowable的第一个发射的自定义方法,而且还要保留其他方法来监听更改。最好的解决方法是什么? 我天真的方法是复制可流动对象并将其转换为“单一”或“可完成”以获得结果,但是这似乎是多余的。

谢谢。

2 个答案:

答案 0 :(得分:0)

使用.take(1)。 BTW还确保可共享流(否则某些观察者将错过事件)。

答案 1 :(得分:0)

我认为您可以使用share运算符。 Share运算符使Connectable可观察。然后,Connectable Observable发布每个订阅的项目。

val o = Flowable.fromArray(1, 2, 3, 4, 5)
    .map {
        println("heavy operation")
        it + it
    }
    .share() // publish the changes
    .subscribeOn(Schedulers.computation()) // for testing. change what you want

o.take(1).subscribe { println("Special work: $it") } // take one

o.subscribe { println("Normal work: $it") }

结果

heavy operation
Special work: 2
Normal work: 2
heavy operation
Normal work: 4
heavy operation
Normal work: 6
heavy operation
Normal work: 8
heavy operation
Normal work: 10