【问题标题】:Confused about side effects / ContinueAfter对副作用感到困惑/之后继续
【发布时间】:2016-06-27 22:08:48
【问题描述】:

我有一个场景,我从 api 下载父实体并将它们保存到数据库中。然后,我希望在所有父母都被保存后,下载并保存他们的孩子。

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

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

【问题讨论】:

    标签: system.reactive reactive-programming


    【解决方案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 => { });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2012-07-22
      相关资源
      最近更新 更多