对副作用/ ContinueAfter感到困惑

时间:2016-06-27 09:51:32

标签: system.reactive reactive-programming

我有一个场景,我从api下载父实体并将它们保存到数据库。一旦所有父母都得救了,我就想要下载并拯救他们的孩子。

我已经看到(或误解了)关于这是一个副作用的一些评论,因为我不会将父保存操作的结果传递给save children操作。我只是想在父母得救后开始。

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

1 个答案:

答案 0 :(得分:1)

也许尝试这样的事情:

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

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