我正在使用RxJava来确定自事件以来是否已经过了x个时间。我正在使用的逻辑基本上是通过x延迟事件,将其与主事件流合并并检查两个事件是否相同。两个事件完全相同的唯一情况是延迟事件是自原始事件以来发生的唯一事件。
代码是这样的:
sourceObservable
.mergeWith(
sourceObservable
.filter(Event::isOneEvent)
.delay(5, TimeUnit.SECONDS))
)
.scan(Event.OtherEvent(), (event1, event2) -> event1.equals(event2) ? Event.TimeOut() : event2)
.filter(Event::isTimeoutEvent)
问题是,当订阅此流时,只有内部observable获取事件。我认为这是因为观察结果很冷。我使用PublishSubject
进行了相同的测试,但是如果有更好的解决方案,我不想使用它。