Есть ли способ (оператор) уменьшить / улучшить код ниже?
Я хочу взять первый элемент Наблюдаемой, но задержит его завершение до завершения источника (поэтому я согласен с 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();
}
}