是否有内置方法可以将 IEnumerable<Task<T>> 转换为 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();