Một trường hợp sử dụng mà tôi đã gặp, và tôi nghi ngờ tôi không thể là người duy nhất, là một phương pháp như:Có phương pháp Rx nào để lặp lại giá trị trước đó định kỳ khi không có giá trị nào đến không?
IObservable<T> Observable.RepeatLastValueDuringSilence(this IObservable<T> inner, TimeSpan maxQuietPeriod);
mà sẽ trả lại tất cả các mục trong tương lai từ những quan sát bên trong, nhưng cũng có thể, nếu bên trong quan sát không gọi OnNext trong một khoảng thời gian nhất định (maxQuietPeriod), nó chỉ lặp lại giá trị cuối cùng (cho đến khi tất nhiên bên trong gọi OnCompleted hoặc OnError).
Một biện minh cho dịch vụ định kỳ sẽ ping cập nhật trạng thái định kỳ. Ví dụ:
var myStatus = Observable.FromEvent(
h=>this.StatusUpdate+=h,
h=>this.StatusUpdate-=h);
var messageBusStatusPinger = myStatus
.RepeatLastValueDuringSilence(TimeSpan.FromSeconds(1))
.Subscribe(update => _messageBus.Send(update));
Có điều gì giống như vậy không? Hay tôi ước lượng quá mức tính hữu ích của nó?
Cảm ơn, Alex
PS: Tôi xin lỗi vì bất kỳ thuật ngữ/cú pháp không chính xác, như tôi chỉ mới khám phá Rx cho lần đầu tiên.
Tần suất lặp lại liên tục? – Asti
@Asti: ý định là điều này nên được chỉ định bởi maxQuietPeriod. Nếu chuỗi bên trong không tạo ra giá trị cho maxQuietPeriod, thì giá trị lặp lại sẽ được tạo ra. – AlexC