有沒有辦法(運算符)來縮小/增強下面的代碼?我想獲取Observable 的第一個元素,但延遲其完成,直到源完成(這就是我使用 進行連接的原因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貢獻1796條經(jīng)驗 獲得超10個贊
怎么樣.distinctUntilChanged()
Observable.interval(1,?TimeUnit.SECONDS,?scheduler) ????.take(7) ????.distinctUntilChanged((a,?b)?->?true) ????.test();
除第一項外的所有項目均被比較器阻止。當上游完成時,流也完成。
編輯:
甚至更短,只需.distinct
Observable.interval(1,?TimeUnit.SECONDS,?scheduler) ????.take(7) ????.distinct(a?->?0) ????.test();
添加回答
舉報
0/150
提交
取消