使用promises加载树结构(承诺中的承诺?)

时间:2016-01-18 08:16:12

标签: javascript angularjs

我需要显示项目的树结构,我的问题是我应该如何加载这个结构

假设我想要一个这样的结构:

Parent1
  - Child1
  - Child2
Parent2
  - Child1
Parent3
  - Child1

加载“父母”时,我会这样做

var parents = [];

var promise = ParentService.queryParent();
promise.then(function(response){

    angular.forEach(response, function(item){
        // another promise here?
        parents.push(item);
    });

}, function(reason){
    console.log(reason);
});

但我应该怎样加载'孩子'?我的第一个想法是在第一个承诺的forEach内创造另一个承诺,但是如果我有很多父母,并且每个父母都有很多孩子,这就不会很好地扩展(这里有一些很大的符号)这是我猜的最差的那种)

我应该如何处理这个问题,任何想法?

编辑:这是我在第一个承诺中的第二个承诺

    var promise = ParentService.queryParent();
    promise.then(function(response){

        angular.forEach(response, function(item){
            parents.push(item);

            var promise2 = ChildService.queryChild(item.ID);
            promise2.then(function(response){

                angular.forEach(response, function(item){
                    children.push(item);
                });

            }, function(reason){console.log(reason);});

        });

    }, function(reason){console.log(reason);});

问题:这样做会显示所有父母,但不显示他们的孩子。孩子们在那里,但似乎观点无法跟上,这可能是什么原因?

0 个答案:

没有答案