有一個內置的方式爲IEnumerable <任務<牛逼> >轉換成的IObservable <牛逼>。訂單並不重要,只是我得到的東西,但最好是因爲他們完成。如何爲IEnumerable <Task<T>>轉換成的IObservable <T>
如果它還不存在,有什麼可能是一個很好的方法來實現它?
有一個內置的方式爲IEnumerable <任務<牛逼> >轉換成的IObservable <牛逼>。訂單並不重要,只是我得到的東西,但最好是因爲他們完成。如何爲IEnumerable <Task<T>>轉換成的IObservable <T>
如果它還不存在,有什麼可能是一個很好的方法來實現它?
我相信這會工作
tasks.Select(t => Observable.FromAsync(() => t))
.Merge();
每個任務將其結果發送到可以以任意順序完成它們的可觀察序列。您可以訂閱該序列,並以此方式執行任何您想要的結果。
我相信你在找什麼可能是Observable.Start()
然後,您可以追加.Subscribe(callbackMethod)
到最後,如果需要指定一個回調。
你可以這樣來做:
var query = tasks.ToObservable().SelectMany(task => task.ToObservable());
,或者,像這樣:
var query =
from t in tasks.ToObservable()
from i in t.ToObservable()
select i;
爲Rx 2.0的,有一個稍微簡單的方法:
var query = tasks.ToObservable().Merge();