Ale*_*hov 5 c# system.reactive
我有要完成的操作列表,我想返回一个可观察量,当所有可观察量完成时会通知该可观察量(返回操作状态将是最好的):
foreach (var id in service.FetchItems().ToEnumerable().ToArray())
{
service.Delete(id); // <- returns IObservable<Unit>
}
// something.Wait();
Run Code Online (Sandbox Code Playgroud)
service.FetchItems()返回IObservable<string>,service.Delete(...)返回IObservable<Unit>
下面的方法正确吗?
service.FetchItems().ForEachAsync(id => service.Delete(id)).ToObservable().Wait();
Run Code Online (Sandbox Code Playgroud)
ToEnumerable阻塞等待序列中的下一个元素。你可以这样做:
Task delAllTask = service.FetchItems()
.SelectMany(service.Delete)
.ToTask();
Run Code Online (Sandbox Code Playgroud)
然后你可以阻止任务或异步继续,例如
delAllTask.Wait();
delAllTask.ContinueWith(...);
Run Code Online (Sandbox Code Playgroud)