RxJava: Как условно применить операторы к наблюдаемой, не разрывая цепочку
У меня есть цепочка операторов на RxJava наблюдаемой. Я хотел бы иметь возможность применять один из двух операторов в зависимости от логического значения без "разрыва цепи".
Я относительно новичок в Rx (Java) и чувствую, что, возможно, есть более идиоматичный и читаемый способ сделать это, чем мой нынешний подход к введению временной переменной.
Вот конкретный пример: буферизация элементов из наблюдаемого, если поле размера партии не равно нулю, в противном случае создается единая партия неограниченного размера сtoList()
:
Observable<Item> source = Observable.from(newItems);
Observable<List<Item>> batchedSource = batchSize == null ?
source.toList() :
source.buffer(batchSize);
return batchedSource.flatMap(...).map(...)
Возможно ли что-то подобное? (псевдо-лямбды, потому что Java):
Observable.from(newItems)
.applyIf(batchSize == null,
{ o.toList() },
{ o.buffer(batchSize) })
.flatMap(...).map(...)