Rx:等待几个可观察的完成

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)

Lee*_*Lee 0

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)