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