我有一個IObservable<T>
其中T看起來像的Rx分組節流
public class Notification
{
public int Id { get; set; }
public int Version { get; set; }
}
通知以可變的時間間隔以及用於不同的通知,其中,所述版本號獲得與每個每通知ID更新遞增生成。
什麼是合適的方法來限制特定時間段內的觀察值,然後使用最新版本字段接收不同的通知?
到目前爲止,我想出了這個節流和分組,但無法弄清楚如何實際返回IObservable<Notification>
。
public static IObservable<int> ThrottledById(this IObservable<Notification> observable)
{
return observable
.GroupByUntil(n => n.Id, x => Observable.Timer(TimeSpan.FromSeconds(1)))
.Select(group => group.Key);
}
編輯: 樣品輸入/輸出(節氣門的延遲:3):
1. { id: 1, v: 1 }
2. { id: 1, v: 2 } { id: 2, v: 1 }
3. { id: 1, v: 3 }
-----------------------------------> notify { id:1, v: 3 }, notify { id:2, v: 1 }
4.
5. { id: 2, v: 2 }
6.
-----------------------------------> notify { id:2, v: 2 }
7. { id: 1, v: 4 }
8. { id: 1, v: 5 } { id: 2, v: 3 }
9. { id: 1, v: 6 }
-----------------------------------> notify { id:1, v: 6 }, notify { id: 2, v: 3 }
...
...
你可以添加與所需的輸出一些樣品的輸入? – Shlomo