我正在试图弄清楚如何使用Observable.groupBy来限制按键在一个时间范围内推送的元素数量。我最终得到以下结构:
create(emitter -> {
while (true) {
publishedMeter.mark();
emitter.onNext(new Object());
}
})
.window(1000L, TimeUnit.MILLISECONDS)
.flatMap(window -> window.groupBy(o -> o.hashCode() % 10_000).flatMapMaybe(Observable::lastElement))
.subscribe(e -> receivedMeter.mark());
虽然subscribe的onNext回调被调用几千次,我认为这应该意味着flatMapMaybe正确订阅了所有GroupedObservableSource。片刻之后RxComputationThreadPool中的一个线程,但我不明白我错过了什么