我有一个RxJava v1.x Observable(实际上是一个Subject),在正常情况下,它将每秒发出一次元素。有时可能会有中断,导致排放停止一会儿(没有发出错误或完成信号!),直到排放再次以正常速度恢复。
我正在寻找一种方法,可以将该源Observable转换为另一个源,以反映每个源的发射,但是如果源保持沉默的时间过长(例如,超过30秒),则“插入”一个特殊的“占位元素”,而无需取消订阅源(即它仍应反映后续的源排放)!
我将尝试说明这种情况:
source:
s[t=1], s[t=2], s[t=3], s[t=40], s[t=41], ...
result:
s[t=1], s[t=2], s[t=3], x[t=33], s[t=40], s[t=41], ...
在这里,x
是在源保持沉默30秒后(即在时间t = 33时)发出的“插入”元素。
理想情况下,我想实现此目标而不必停止或重新启动源。