繁体   English   中英

如何将IEnumerable <Task <T >>转换为IObservable <T>

[英]How to convert an IEnumerable<Task<T>> to IObservable<T>

是否有内置的方法将IEnumerable <Task <T >>转换为IObservable <T>。 顺序并不重要,只是我得到的东西,但最好是因为它们已经完成。

如果它还不存在,那么实现它的好方法是什么?

我相信这会奏效

tasks.Select(t => Observable.FromAsync(() => t))
     .Merge();

每个任务都会以任何顺序将结果发送到可观察序列。 您可以订阅序列,并以这种方式对结果执行任何操作。

你可以这样做:

var query = tasks.ToObservable().SelectMany(task => task.ToObservable());

或者,或者,像这样:

var query =
    from t in tasks.ToObservable()
    from i in t.ToObservable()
    select i;

我相信你所寻找的可能是Observable.Start()

然后,您可以将.Subscribe(callbackMethod)附加到末尾,并在需要时指定回调。

从Rx 2.0开始,有一种更简单的方法:

var query = tasks.ToObservable().Merge();

暂无
暂无

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

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