Исходя из фона RxJava, я не могу придумать стандартный подход для реализации скользящих окон в RxSwift.Например, у меня есть следующая последовательность событий:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ...
Давайте представим, что передача события происходит дважды в секунду.То, что я хочу сделать, это преобразовать эту последовательность в последовательность буферов, каждый из которых содержит последние три секунды данных.Кроме того, каждый буфер должен выводиться один раз в секунду.Таким образом, результат будет выглядеть следующим образом:
[1,2,3,4,5,6], [3,4,5,6,7,8], [5,6,7,8,9,10], ...
Что бы я делал в RxJava, я бы использовал одну из перегрузок метода buffer
следующим образом:
stream.buffer(3000, 1000, TimeUnit.MILLISECONDS)
Какойприводит именно к результату, который мне нужно достичь: последовательность буферов, каждый буфер генерируется один раз в секунду и содержит последние три секунды данных.
Я проверял документы RxSwift далеко и широко, и я не нашел никаких перегрузок оператора buffer
, которые позволили бы мне это сделать.Я упускаю какой-то неочевидный (для пользователя RxJava, ofc) оператор?