我遇到了一个我以前没见过的RX方法,然后去MSDN查看可能存在的任何文档。
方法是
public static IObservable<IList<TSource>> CombineLatest<TSource> (this IEnumerable<Iobservable<TSource>> sources)
我熟悉一个将Observable作为参数和转换函数并返回一个Observable的CombineLatest。
不幸的是,MSDN只有"Observable.CombineLatest<TFirst, TSecond, TResult> Method"
的页面。
我是否在寻找错误的地方或者我错过了一个更好的地方来查看除MSDN以外的RX API文档?
答案 0 :(得分:1)
MDSN文档非常糟糕。我找到的两个最佳网站是http://introtorx.com和http://reactivex.io。这两个网站都没有关于超载的信息。 :)
基本上每当一个observable发出一个值后,每当其中一个流发出一个值时,最新组合会发出一个新列表。列表内容是来自每个子流的最新值的列表。如果流完成,则该值将永久传播。如果流错误,则合并流错误。
您可以在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