RxJava concatMap仅连接最新的发射

时间:2018-07-29 21:28:12

标签: rx-java reactive-programming rx-java2 switchmap concatmap

我有一个可以在数据更改时远程同步数据的系统。

当新数据传入时,Flowable会发出项目,我想在本地处理该数据。如果Flowable在处理过程中发出了另一个项目,我想等到它完成后再处理下一个项目。我可以为此使用concatMap

但是,我想添加一个优化,如果Flowable在处理第一个项目时发出许多项目,我只希望最后一个项目被发出,而不是所有它们都发出。我可以为此使用switchMap

问题是,我不希望在发出新项目时对当前处理进行处理。我需要完成当前的处理,然后才能处理Flowable的最新发射。

关于如何执行此操作的任何想法?我一直在使用publish和一个buffer来打开和关闭信号,但似乎总是以僵局结束。

我想我可以做一些事情,例如在计时器上放置buffer,并且在发射列表上的filter不为空,然后map到列表的最后一项,但是我的系统反应迟钝(对计时器触发反应,但数据未更改),并且正在使用额外的资源(因为计时器不断触发,即使上游没有发出)。

0 个答案:

没有答案