【发布时间】:2016-06-27 22:08:48
【问题描述】:
我有一个场景,我从 api 下载父实体并将它们保存到数据库中。然后,我希望在所有父母都被保存后,下载并保存他们的孩子。
我已经看到(或误解了)一些 cmets 关于这是一个副作用的原因,因为我不会将父保存操作的结果传递给保存子操作。我只是想在父母得救时开始。
有人可以向我解释这样做的最佳方式吗?
【问题讨论】:
标签: system.reactive reactive-programming
我有一个场景,我从 api 下载父实体并将它们保存到数据库中。然后,我希望在所有父母都被保存后,下载并保存他们的孩子。
我已经看到(或误解了)一些 cmets 关于这是一个副作用的原因,因为我不会将父保存操作的结果传递给保存子操作。我只是想在父母得救时开始。
有人可以向我解释这样做的最佳方式吗?
【问题讨论】:
标签: system.reactive reactive-programming
也许可以试试这样的:
Observable
.Create<int>(o =>
{
var parentIds = new int?[] { null };
return
Observable
.While(
() => parentIds.Any(),
parentIds
.ToObservable()
.Select(parentId => Save(parentId)))
.Finally(() => { /* update `parentIds` here with next level */ })
.Subscribe(o);
})
.Subscribe(x => { });
这实际上是对所有实体进行广度优先遍历,在执行过程中保存它们,但输出一个您可以订阅的可观察对象。
【讨论】: