У нас есть потребность в «часах» один горячий наблюдаемом на основе другого, например:Используя один Наблюдаемый в часы другие Наблюдаемые
main: --(1)-----(2)-----(3)-----(4)-------(5)----(6)------------|
clock: -------(X)------------(X)------(X)--------------(X)-------|
______________________________________________________________________________
expected result: -------(1)(2)-----(3)-(3)-(4)--(4)--(5)----(6)--(6)-------|
Более конкретно, когда «часы» излучающий элемент, последний пункт из другого наблюдаемого испускается снова. Выброс элемента задерживается до тех пор, пока оба наблюдаемых не испускают хотя бы один предмет. Прямо сейчас, мы достигаем это следующим образом:
<T, U> Observable<T> clock(Observable<T> main, Observable<U> clock) {
return Observable.combineLatest(main, clock, (mainItem, clockItem) -> mainItem);
}
Это, кажется, несколько глупо, как мы применяем преобразование, а затем просто выбросить один из входов. Кроме того, у нас есть случайные проблемы с давлением, связанные с этим решением. Кажется, что существует существующий оператор Rx, который выполняет эту операцию, но до сих пор я не нашел подходящего API-метода, который делает именно это. Есть ли лучший, более идиоматический способ решения этой проблемы с RxJava?
Да, мы также используем onBackpressureBuffer(). Спасибо, что подтвердили, что это действительно самый простой способ добиться этого. – user1932890