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



是否有一种内置方法可以将 IEnumerable> 转换为 IObservable。顺序并不重要,重要的是我得到东西,尽管最好是在它们完成时。

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

我相信这会起作用

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();

最新更新