c# – Rx:等待几个observable完成

我有完成的操作列表,我想返回一个observable,当所有的observable都完成时会通知它(返回操作的状态是最好的):

foreach (var id in service.FetchItems().ToEnumerable().ToArray())
{
    service.Delete(id); // <- returns IObservable<Unit>
}
// something.Wait();

service.FetchItems()返回IObservable< string>,service.Delete(…)返回IObservable< Unit>

以下方法是否正确?

service.FetchItems().ForEachAsync(id => service.Delete(id)).ToObservable().Wait();

最佳答案 我会避免所有等待和任务,并坚持使用普通的RX.

试试这种方法:

var query =
    from id in service.FetchItems()
    from u in service.Delete(id)
    select id;

query
    .ToArray()
    .Subscribe(ids =>
    {
        /* all fetches and deletes done now */
    });

Rx中的.ToArray()运算符采用IObservable< T>返回0或更多T并返回IObservable< T []>只有在源observable完成时才返回包含零个或多个T的单个数组.

点赞