可流动发射时从单一发射发出

时间:2018-10-16 09:34:12

标签: android rx-java rx-java2

我有一个活动,您可以在其中根据过滤器和地图的当前视口看到很多地方。

因此,我将这两个源建模为Flowables

fun boundariesFlowable(): Flowable<Pair<LatLon, LatLon>>
fun filtersFlowable(): Flowable<FilterRequest>

边界在哪里发出地图视口的TopLeft和BottomRight角,而过滤器仅发出用户应用的过滤器中的任何更改。

现在,我想观察这两个来源,以便每次它们中的任何一个改变都执行一次呼叫。这是我的请求电话:

 fun refreshApplyFilter(id: Int, filter: FilterRequest): Single<FilterResponse>

问题是,我无法弄清楚如何组合此触发源,或如何对其发射进行调用。

我尝试过仅映射其中一个来源,但是它期望Publisher,而我的请求是Single

1 个答案:

答案 0 :(得分:1)

您可以使用Flowable.combineLatest()运算符观察多个源。如果其中任何一个发布新值,则将触发功能。

val res: Flowable<FilterResponse> = Flowable.combineLatest(boundariesFlowable(), filtersFlowable(), BiFunction<Pair<LatLon, LatLon>, FilterRequest, FilterRequest> { pair, filter ->
    filter
}).flatMapSingle { filter -> refreshApplyFilter(0, filter) }