缓存可观察量中最后一个发出的值



在许多情况下,我发现自己需要从可观察量访问最近发出的值。我这样做的方法是订阅出现的可观察值和缓存值。例如,请参见下文。但是,我看到有一堆方法,如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);
}
以下是

我在实现此行为时会考虑的两种方法。

var bs = new BehaviorSubject<long>(0); //initial value
source.Subscribe(bs.OnNext);
Console.WriteLine(bs.Value); 

使用BehaviorSubject,您可以通过属性访问最新值。

var ls = source.TakeLast(1);
bs.Subscribe(Console.WriteLine);

使用 TakeLast 您必须订阅才能访问最新值(尽管在处置之前只发出一个值)。

相关内容

  • 没有找到相关文章

最新更新