Rx IObservable - 返回第一个IObservable流以获取值

jam*_*nor 0 .net c# system.reactive

我正在创建两个(或更多)IObservable<T>所有相同的T.它们是从Task<IEnumerable<T>>哪个可以比其他人更快地回来生成的.我所关心的只是IObservable返回第一个值 - 这是我从那时开始使用的值.

我记得在剑桥参加过Jon Skeet的演讲,他用非常简洁的方式使用TPL完成了这个,但我记不起来了!理想情况下,我会得到一个像这样的方法:

IObservable<T> PickFastestObservable<T>(IEnumerable<IObservable<T>> slowObservables);
Run Code Online (Sandbox Code Playgroud)

但如果我必须直接在任务上完成,我可能会解决一些问题.

我很努力想让自己有点自信,我很自信.

干杯,

Lee*_*Lee 5

我想你想Observable.Amb

IObservable<T> fastest = slowObservables.Amb();
Run Code Online (Sandbox Code Playgroud)

  • @jamespconnor - 文档没有提供太多细节,但我当然希望它在有值时发布它的订阅. (2认同)
  • 查看反射器下的源代码确实可以处理不必要的订阅. (2认同)