System.reactive 反应式扩展文档

System.reactive 反应式扩展文档,system.reactive,msdn,System.reactive,Msdn,我遇到了一个我以前从未见过的RX方法,我去MSDN查看了可能存在的任何文档 方法是 public static IObservable<IList<TSource>> CombineLatest<TSource> (this IEnumerable<Iobservable<TSource>> sources) 我熟悉CombineTest,它将一个可观测值作为参数和一个转换函数,并返回一个可观测值 不幸的是,MSDN只有一个用于Obs

我遇到了一个我以前从未见过的RX方法,我去MSDN查看了可能存在的任何文档

方法是

public static IObservable<IList<TSource>> CombineLatest<TSource> (this IEnumerable<Iobservable<TSource>> sources)
我熟悉CombineTest,它将一个可观测值作为参数和一个转换函数,并返回一个可观测值

不幸的是,MSDN只有一个用于Observable.CombineTest方法的页面


我是找错地方了,还是找不到更好的地方看RX API文档,而不是MSDN?

MDSN文档太糟糕了。我找到的两个最好的网站是和。但两个站点都没有关于该过载的信息:

基本上,一旦每个可观察对象发出一个值,那么每次其中一个流发出一个值时,合并最新的值将发出一个新列表。列表内容是来自每个子流的最新值的列表。如果流完成,该值将永远传播。如果一个流出错,则合并的流出错

您可以在LinqPad中运行以下程序来演示它的功能:

var letters = new Subject<string>();
var numbers = new Subject<string>();

var observables = new IObservable<string>[] { letters, numbers };
var combineLatest = observables.CombineLatest();
combineLatest.Dump("CombineLatest");

numbers.OnNext("0");
numbers.OnNext("1");
letters.OnNext("A");
letters.OnNext("B");
numbers.OnNext("2");
letters.OnNext("C");
letters.OnNext("D");
numbers.OnCompleted();
letters.OnNext("E");
letters.OnError(new Exception());
Letters: ------A--B-----C--D-----E--x
Numbers: 0--1--------2--------|
--------
Combine: ------A1-B1-B2-C2-D2----E2-x