2
給定的順序,IObservable<int> source;
,有沒有之間的差異:什麼source.StartWith之間的差值(X).Replay(1)和source.Publish(X)
var published = source.Publish(0);
var publishedConnection = published.Connect();
和
var replayed = source.StartWith(0).Replay(1);
var replayedConnection = replayed.Connect();
據我所知,它們非常相似。它們的默認值都爲零,在訂閱時,觀察者將立即收到source
中的最後一個值,source
中的所有其他值將被推送給用戶。
我有我讀的地方(我現在找不到)一個模糊的暗示,如果source
人來完成,published
不會傳遞給新用戶的任何值,而是立即完成,而replayed
仍然會重演在完成之前爲新用戶提供最後的價值。
我是否記得這個正確(任何人都可以找到這樣的源代碼),這兩種方法之間還有其他區別嗎?
雖然你也知道一個技術細節,它可能是值得一提的是,這些運營商之間的主要區別是他們的宗旨:Publish'的'在問題的特定超載被設計成隱藏一個'BehaviorSubject'和'Replay'被設計成隱藏一個'ReplaySubject'。 – 2014-12-05 15:40:10