对副作用感到困惑/之后继续

Confused about side effects / ContinueAfter

我有一个场景,我从 api 下载 parent 个实体并将它们保存到数据库中。然后我想,一旦所有 parent 都被保存,下载并保存他们的 children。

我看到(或误解)了一些关于这是 side-effect 的评论,因为我不会将 parent 保存操作的结果传递给保存 children手术。我只想在保存 parent 时开始它。

有人可以向我解释一下这样做的最佳方法吗?

或许试试这样的方法:

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 => { });

这实际上是对所有实体进行广度优先遍历,在进行时保存它们,但输出一个您可以订阅的可观察对象。