是否有内置的方法来转换IEnumerable< Task< T>>到IObservable< T>。顺序并不重要,只是我得到的东西,但最好是在他们完成后。
如果它还不存在,那可能是一个很好的方法来实现它?
答案 0 :(得分:7)
我相信这会有用
tasks.Select(t => Observable.FromAsync(() => t))
.Merge();
每个任务都会以任何顺序将结果发送到可观察序列。您可以订阅序列,并以这种方式对结果执行任何操作。
答案 1 :(得分:2)
你可以这样做:
var query = tasks.ToObservable().SelectMany(task => task.ToObservable());
或者,或者,像这样:
var query =
from t in tasks.ToObservable()
from i in t.ToObservable()
select i;
答案 2 :(得分:1)
我相信你所寻找的可能是Observable.Start()
然后,您可以将.Subscribe(callbackMethod)
追加到最后,并在需要时指定回调。
答案 3 :(得分:0)
从Rx 2.0开始,有一种更简单的方法:
var query = tasks.ToObservable().Merge();