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



我正在将响应式编程应用于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(这个 IEnumerable> 源(已经这样做了。我怀疑真正的问题是如何从 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将仅调用两次

相关内容

  • 没有找到相关文章

最新更新