我有完成的操作列表,我想返回一个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的单个数组.