有沒(méi)有辦法(運(yùn)算符)來(lái)縮小/增強(qiáng)下面的代碼?我想獲取Observable 的第一個(gè)元素,但延遲其完成,直到源完成(這就是我使用 進(jìn)行連接的原因ignoreElements)。public class SOTest { private final TestScheduler scheduler = new TestScheduler(); @Test public void take_first_and_do_not_complete() { TestObserver<Long> test = Observable.interval(1, TimeUnit.SECONDS, scheduler) .take(7) .publish(o -> o .firstElement() .toObservable() .concatWith(o .doOnNext(e -> System.out.println("to be ignored: " + e)) .ignoreElements() ) ) .doOnNext(e -> System.out.println("First is: " + e)) .test(); scheduler.advanceTimeTo(1, TimeUnit.SECONDS); test.assertValueCount(1); test.assertNotComplete(); scheduler.advanceTimeTo(5, TimeUnit.SECONDS); test.assertValueCount(1); test.assertNotComplete(); scheduler.advanceTimeTo(7, TimeUnit.SECONDS); test.assertValueCount(1); test.assertComplete(); }}
1 回答
白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
怎么樣.distinctUntilChanged()
Observable.interval(1,?TimeUnit.SECONDS,?scheduler) ????.take(7) ????.distinctUntilChanged((a,?b)?->?true) ????.test();
除第一項(xiàng)外的所有項(xiàng)目均被比較器阻止。當(dāng)上游完成時(shí),流也完成。
編輯:
甚至更短,只需.distinct
Observable.interval(1,?TimeUnit.SECONDS,?scheduler) ????.take(7) ????.distinct(a?->?0) ????.test();
添加回答
舉報(bào)
0/150
提交
取消
