如何在RxJava中增加某些项目的延迟

问题描述

我想要实现RxChain的目的如下:

可观察的源正在发射两种类型的数据(S,E)。现在,我想要一个可观察/可流动的对象,它会立即发出所有S信号,但是如果同时没有S信号,它应该在从第一次发出E信号经过给定的延迟(10秒)之后发出最新的E信号。

enter image description here

解决方法

您可以将它们分为2个可观测对象,而不是让1个同时发射S和E的可观测源,在“ E流”上添加throttleLast 10s,然后将它们合并在一起

例如

Observable<String> sStream = source.filter(x -> x.type == Types.S);
Observable<String> eStream = source.filter(x -> x.type == Types.E).throttleLast(10,TimeUnit.SECONDS);


Observable.merge(sStream,eStream).subscribe(...);