Tôi có một loạt các sự kiện sắp tới và tôi phải thực hiện TẤT CẢ chúng mà không bị mất, nhưng tôi muốn đảm bảo rằng chúng được đệm và tiêu thụ tại các khe thời gian thích hợp. Bất cứ ai có một giải pháp?Cách tốt nhất để "giới hạn tốc độ" tiêu thụ của một Đài quan sát là gì?
Tôi không thể tìm thấy bất kỳ toán tử nào trong Rx có thể làm điều đó mà không làm mất các sự kiện (Throttle - mất sự kiện). Tôi cũng được coi là Buffered, Delay, etc ... Không thể tìm ra giải pháp tốt.
Tôi đã cố gắng để đặt một bộ đếm thời gian ở giữa, nhưng bằng cách nào đó nó không hoạt động tại tất cả:
GetInitSequence()
.IntervalThrottle(TimeSpan.FromSeconds(5))
.Subscribe(
item =>
{
Console.WriteLine(DateTime.Now);
// Process item
}
);
public static IObservable<T> IntervalThrottle<T>(this IObservable<T> source, TimeSpan dueTime)
{
return Observable.Create<T>(o =>
{
return source.Subscribe(x =>
{
new Timer(state =>
o.OnNext((T)state), x, dueTime, TimeSpan.FromMilliseconds(-1));
}, o.OnError, o.OnCompleted);
});
}
Bạn có thể thêm bằng đá cẩm thạch digram cho thấy những gì bạn có, và những gì bạn muốn? Giống như những người khác, tôi không chắc chắn những gì bạn đang cố gắng đạt được, như tôi nghĩ Buffer là tốt. –
Bạn giới hạn điều gì? – Fredrick