Подпишитесь на последние n выпусков Observable

У меня есть Observable, который испускает целые числа:

Observable.just(1, 2, 3, 4)

который будет излучать 1,2,3,4

Как я могу применить функцию, которая работает с последними n выбросами, например (псевдокод)

Observable.just(1, 2, 3, 4).doWithLatest(2, { i1, i2 -> i1 + i2 })

(2 - количество выбросов, к которым должна применяться функция)

что приведет к выбросу 3,5,7 (сумма двух последних выбросов, как указано в функции)?


person fweigl    schedule 08.03.2018    source источник


Ответы (1)


Используйте скользящий буфер:

Observable.range(1, 4)
.buffer(2, 1)
.filter(list -> list.size() == 2)
.map(list -> list.get(0) + list.get(1))
.test()
.assertResult(3, 5, 7);
person akarnokd    schedule 09.03.2018