Во многих случаях мне нужно получить доступ к последнему испускаемому значению из наблюдаемого. То, как я это сделал, - это подписка на наблюдаемые и кеширующие значения по мере их появления. См. Ниже, например. Однако я вижу, что существует множество методов, таких как Observable.MostRecent, Observable.Latest, Replay (1) и т. Д., Которые, похоже, могут выполнить то, что я ищу, но я не могу понять, как их использовать. Есть ли лучший подход, чем метод, который я использую ниже?Кэширование последнего испускаемого значения из наблюдаемого
public class WordPrinterWithCache
{
string _lastWord = string.Empty;
public WordPrinterWithCache(IObservable<string> words)
{
words.Subscribe(w => _lastWord = w);
}
public void PrintMostRecent() => Console.WriteLine(_lastWord);
}
Вы в конечном итоге использовали некоторые из моих предложений или внедрили свой собственный метод? – supertopi
Я пытаюсь избежать необходимости делать это вообще, и большинство из них я строю свой код вокруг наблюдаемых и меньше вокруг изменяемых переменных, тем легче это сделать. Если я хочу самое последнее, я использую CombineLatest или WithLatestFrom. – JustinM