Подтвердить что ты не робот

Как я могу предоставить последнее значение горячего наблюдаемого при подписке

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

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

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

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

4b9b3361

Ответ 1

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

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

Чтобы понять, что каждый из Субъектов проверяет Intro to Rx post