我有一个简单的课程:
public class Event {
String objectId;
}
一些事件源向我的observable发出事件。这个源是无限的,可以用相同的objectId发送几次事件
所以,我希望按objectId
对值进行分组,然后对每个组进行去抖动
如果我有,那就说吧
E1-E1-E2-E1-E2-E2-E2...E2-E1-E100..
我想实现:
E1
E2
..
E2
E1
E100
..
因此,具有相同objectId
的事件在1s内不会多次发出。
答案 0 :(得分:3)
你可以采用你的描述"所以,我想通过objectId对值进行分组,然后去抖动每个组。"并直接将其转换为运营商:
Observable.groupBy
Observable.map
和Observable.debounce
Observable.merge
转入:
Observable.merge(
<source>.groupBy(value -> value.objectId)
.map(observable -> observable.debounce(1, TimeUnit.SECONDS))
)