简体   繁体   English

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

[英]Rx IObservable - return first IObservable stream to get a value

I am creating two (or more) IObservable<T> s of all the same T. They have been generated from Task<IEnumerable<T>> of which one can come back quicker than the others. 我正在创建两个(或多个)所有相同T的IObservable<T> 。它们是从Task<IEnumerable<T>> ,其中一个可以比其他的返回更快。 All I care about is the IObservable which returns the first value - this is the one that I use from then on. 我只关心返回第一个值的IObservable ,这是我从那时起使用的那个值。

I remember attending a Jon Skeet presentation in Cambridge where he did exactly this using the TPL in a very neat way but I can't remember how! 我记得在剑桥参加Jon Skeet的演讲时,他以非常简洁的方式使用TPL做到了这一点,但我不记得怎么做! Ideally I'd get a method something like this: 理想情况下,我会得到如下所示的方法:

IObservable<T> PickFastestObservable<T>(IEnumerable<IObservable<T>> slowObservables);

But if I had to do it on the tasks directly, I could probably work something out. 但是,如果我必须直接在任务上执行此操作,则可能可以解决一些问题。

I'm struggling to get something up myself that I'm confident with. 我正在努力使自己充满信心。

Cheers, 干杯,

我想你想要Observable.Amb例如

IObservable<T> fastest = slowObservables.Amb();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM