Вы не можете сделать это с replay()
, так как вам нужно было бы получить только кэшированные элементы в не завершенном источнике.Тем не менее, ReplaySubject
позволяет вам заглянуть в него и получить массив элементов, которые можно повернуть вспять, а затем объединить с остальными тем же предметом, но пропуская только что полученные снимки:
ReplaySubject<ItemType> subject = ReplaySubject.create();
source.subscribe(subject);
Observable<ItemType> result = Observable.defer(() -> {
ItemType[] current = subject.getValues(new ItemType[0]);
return Observable.range(0, current.length)
.map(index -> current[current.length - 1 - index])
.concatWith(subject.skip(current.length));
});