Как я могу предоставить последнее значение горячей наблюдаемой при подписке - PullRequest
13 голосов
/ 11 декабря 2011

У меня есть горячая наблюдаемая (из события), которую я вызываю DistinctUntilChanged, для которой будет иметься несколько подписчиков, которые будут подписываться в разное время после того, как наблюдаемая будет запущена и выдаст свое первое значение.Подписчики получат IObservable через свойство в моем классе.

Как мне сделать так, чтобы каждый раз, когда кто-то подписывался на наблюдаемое, он получал последнее опубликованное значение, но наблюдаемое обычно действует иначе?Я думаю, что, возможно, ищу PublishLast, но я не уверен, есть ли у него другие побочные эффекты.

Аналогичный вопрос : Как получить IObservable для отправкиновейшая стоимость при подписке ?Это очень похожий вопрос, но это более года назад, и в Rx было сделано много дополнений, поэтому я думаю, что сейчас может быть встроенная функция, а не полагаться на BehaviorSubject, поэтому я недумаю, что это точный дубликат.

Редактировать: Вот , что я на самом деле пытаюсь сделать.Ниже комментария есть фактическая последовательность, о которой я говорю.

1 Ответ

8 голосов
/ 13 февраля 2012

Другой ответ был близок.Вы либо хотите ReplaySubject (1), т.е. только значение 1 воспроизведения;или вы хотите BehaviorSubject.Разница в поведении субъекта потребует значения по умолчанию.Это также гарантирует, что подписчик всегда получит значение немедленно.

var replay1 = source.Replay(1);
replay1.Connect();
//Or
var alwaysHaveValue = source.Multicast(new BehaviorSubject<int>(-1));

Чтобы понять каждую из тем, ознакомьтесь с моим вступлением к Rx post

...