[英]Operator on RxJava Observable/Flowable to delay emission by n items
我想轉換一個Flowable
以便它推遲發射項目,直到收集到指定數量的項目,然后以 FIFO 順序將它們發射到下游,保持恆定的延遲項目計數。 一旦上游發出 onComplete 信號,排隊的項目應該在發出 onComplete 之前被刷新到下游:
(在本例中延遲項目編號為 3)
1 2 3 4 5 6 7 |
1 2 3 4 5 6 7 |
我沒有看到任何現有的運營商這樣做或可以修改以獲得該行為。 Observable.delay
似乎只支持基於時間的延遲,不支持基於計數的延遲。
實現自定義運算符來實現這一點應該很容易,但也許現有運算符有更簡單的方法?
您可以發布一個序列,跳過最后 N,然后追加最后 N:
Flowable.range(1, 7)
.flatMap(v -> Flowable.timer(v * 200, TimeUnit.MILLISECONDS).map(w -> v))
.doOnNext(v -> System.out.println(v))
// -------------------------------------------------------------------
.publish(f ->
f.skipLast(3).mergeWith(f.takeLast(3))
)
// -------------------------------------------------------------------
.blockingSubscribe(v -> System.out.println("<-- " + v));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.