有没有办法在 Observable.WhenAll() 中指定可变数量的 Observable?

Is there a way to specify a variable number of Observable in Observable.WhenAll()?

我正在将响应式编程应用于 Unity3D 项目。 有没有办法在 Observable.WhenAll()?

中指定可变数量的 Observable

样本或搜索结果建议一种明确的方式来输入所有非可变项目,其中大部分不是可变数字。

var parallel = Observable.WhenAll(
                    ObservableWWW.Get ("http://google.com/"),
                    ObservableWWW.Get ("http://bing.com/"),
                    ObservableWWW.Get ("http://unity3d.com/");

我想要的是如下

List<string> URLs = new List<string>();
URLs.Add("http://google.com/");
URLs.Add("http://bing.com/");
...
...
var parallel = Observable.WhenAll( ??? //ObservableWWW.Get() : count of URLs list);

请回复。 谢谢。

WhenAll(this IEnumerable> sources) 已经这样做了。我怀疑 真正的 问题是如何从 URL 列表中生成一些可观察值。一种方法是使用 LINQ :

var urlObservables=URLs.Select(url=>ObservableWWW.Get(url));

var allAsOne= Observable.WhenAll(urlObservables);

更新

正如 Felix Keil 评论的那样,如果 OP 只想观察其中的几个可观察对象怎么办?这是 LINQ 的 Take() 的工作,应用于 URL 列表或可观察列表,例如:

var someObservables=URLs.Take(2).Select(url=>ObservableWWW.Get(url));

甚至

var someObservables=URLs.Select(url=>ObservableWWW.Get(url)).Take(2);

LINQ 的惰性求值意味着只有在枚举 someObservables 时运算符才会 运行。发生这种情况时,枚举将在前两次迭代后停止,因此 ObservableWWW.Get 将仅被调用两次