我有一个可以在数据更改时远程同步数据的系统。
当新数据传入时,Flowable
会发出项目,我想在本地处理该数据。如果Flowable
在处理过程中发出了另一个项目,我想等到它完成后再处理下一个项目。我可以为此使用concatMap
。
但是,我想添加一个优化,如果Flowable
在处理第一个项目时发出许多项目,我只希望最后一个项目被发出,而不是所有它们都发出。我可以为此使用switchMap
。
问题是,我不希望在发出新项目时对当前处理进行处理。我需要完成当前的处理,然后才能处理Flowable
的最新发射。
关于如何执行此操作的任何想法?我一直在使用publish
和一个buffer
来打开和关闭信号,但似乎总是以僵局结束。
我想我可以做一些事情,例如在计时器上放置buffer
,并且在发射列表上的filter
不为空,然后map
到列表的最后一项,但是我的系统反应迟钝(对计时器触发反应,但数据未更改),并且正在使用额外的资源(因为计时器不断触发,即使上游没有发出)。