0
節流規則:節流在RxJava
- 如果在最近的100毫秒發出沒有其他項目,下一個項目將被交付立即訂戶
- 如果沒有,緩衝傳入的項目,直到1000毫秒超時或緩衝區大小達到500,然後提供緩衝項目清單給用戶
RxJava可以實現這個嗎?
節流規則:節流在RxJava
RxJava可以實現這個嗎?
有一個(理論)運算符叫conflate()
,它有一些這樣做。我看到了幾個實現,最近在this discussion thread。從valeriyo的答案適應,我們開展以下操作:
public static <T> Transformer<T, List<T>> adaptiveSample(long time, TimeUnit unit, Scheduler scheduler) {
return source -> source
.publish(shared -> concat(
shared.take(1).toList(),
shared.buffer(500, time, unit, scheduler))
.repeatWhen(a -> shared.debounce(time, unit, scheduler)));
}
你會然後使用應用它的以下內容:
observable
.compose(adaptiveSample(1000, TimeUnit.MILLISECONDS, scheduler))
.subscribe(listOfSamples -> doStuff(listOfSamples));
您將要測試這個自己。我不清楚你的一些假設。