我尝试利用缓冲区运算符的两个variantes来缓冲指定时间范围内的项目。但是,问题是我同时想要缓冲项目(比如说10项,速度为5)。
结果我想推送缓冲区(10,5),如果它在时间跨度之前有项目。如果经过这个时间跨度而没有项目通知空缓冲区。
这是否需要新的自定义运营商?
目前我正在使用我不喜欢的解决方法
Observable<List<Long>> obs = rawObservable
.buffer(1000L, TimeUnit.MILLISECONDS)
// it is fairly possible that no data is gathered during the buffering time
.flatMapIterable(values -> {
if(values.isEmpty()) {
// no data
}
return values;
})
// take values of buffer by 10 items with a pace (shift) of 5 items
.buffer(10, 5);
更新
我想在这里实现的是缓冲特定计数内的数据并跳过参数。正如您可能知道的那样,除非已填充,否则不会返回缓冲区。这就是为什么我想要添加特定时间跨度的时间参数,以便在3秒内没有空缓冲区,例如。