Существует ли метод Rx для периодического повторения предыдущего значения при отсутствии входящих значений?

Вариант использования, с которым я столкнулся, и я подозреваю, что я не единственный, для метода, подобного:

IObservable<T> Observable.RepeatLastValueDuringSilence(this IObservable<T> inner, TimeSpan maxQuietPeriod);

который вернет все будущие элементы из внутреннего наблюдаемого, но также, если внутренний наблюдаемый не вызывает OnNext в течение определенного периода времени (maxQuietPeriod ), он просто повторяет последнее значение (до тех пор, пока, конечно внутренние вызовы OnCompleted или OnError ).

Обоснованием для службы может быть периодическая проверка связи с периодическим обновлением статуса. Например:

var myStatus = Observable.FromEvent(
    h=>this.StatusUpdate+=h,
    h=>this.StatusUpdate-=h);

var messageBusStatusPinger = myStatus
   .RepeatLastValueDuringSilence(TimeSpan.FromSeconds(1))
   .Subscribe(update => _messageBus.Send(update));

Существует ли что-то подобное? Или я переоцениваю -его полезность?

Спасибо, Алекс

PS :Прошу прощения за некорректную терминологию/синтаксис, так как я только впервые изучаю Rx.

12
задан AlexC 12 July 2012 в 12:06
поделиться