2016-06-27 24 views
0

我有一个场景,我从api下载父实体并将它们保存到数据库。然后,我希望一旦所有的父母都得救,就下载并保存他们的孩子。混淆副作用/ ContinueAfter

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

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

回答

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

这是切实做好所有实体的广度优先遍历,为他们节省其道理,但输出单个观察到的,你可以订阅。

+0

让我走上正确的轨道,谢谢。 –