Как в Rx сгруппировать последние элементы через определенный период времени?

Извините, если заголовок не очень ясен, я не смог придумать ничего лучше...

Я получаю пользовательский ввод в виде IObservable , и я хотел бы преобразовать его в IObservable, группируя символы каждый раз, когда пользователь перестает печатать более 1 секунды. Так, например, если ввод следующий:

h
e
l
l
o
(pause)
w
o
r
l
d
(pause)
!
(pause)

Я бы хотел, чтобы наблюдаемый вывод был:

['h', 'e', 'l', 'l', 'o']
['w', 'o', 'r', 'l', 'd']
['!']

Я подозреваю, что решение довольно простое, но я не могу найти правильный подход... Я пробовал использовать Buffer, GroupByUntil, Throttleи некоторые другие, но безрезультатно.

Приветствуются любые идеи!


РЕДАКТИРОВАТЬ: У меня есть кое-что, что почти работает:

        _input.Buffer(() => _input.Delay(TimeSpan.FromSeconds(1)))
              .ObserveOnDispatcher()
              .Subscribe(OnCompleteInput);

Но мне нужно сбрасывать задержку каждый раз, когда вводится новый символ...

7
задан Thomas Levesque 3 April 2012 в 00:14
поделиться