[英]Is there a 'Hot' equivalent of Observable.Interval
如果我執行以下操作:
var obs =
Observable
.Interval(TimeSpan.FromSeconds(1))
.Select(x => "A" + x.ToString());
obs
.Subscribe(x => Console.WriteLine("From first: " + x.ToString()));
Observable
.Timer(TimeSpan.FromSeconds(3))
.SelectMany(_ => obs)
.Subscribe(x => Console.WriteLine("From second: " + x.ToString()));
我會在4秒后得到這個:
From first: A0
From first: A1
From first: A2
From second: A0
From first: A3
是否有一個'Hot'等效的Observable.Interval
會產生這個:
From first: A0
From first: A1
From first: A2
From second: A3
From first: A3
使用Publish()和Connect()會讓你的冷可觀察性變得很熱。
var published = Observable
.Interval(...)
.Select(...)
.Publish();
var connectionSubscription = published.Connect();
var observerSubscription = published.Subscribe(...);
值得注意的是,一旦Connect()調用發生,序列就會變熱。 您可以在Connect()之前訂閱,但請確保在某個階段調用它,否則將無法觀察到任何內容。 Connect()有一些替代品,例如RefCount(),所以值得谷歌。 另外值得注意的是,Publish()返回一個提供Connect()調用的IConnectableObservable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.