Angular 用 $resource 承诺

Angular Promise with $resource

我有一个 angular 承诺,它是通过从 $resource 调用自定义 api 生成的,其中 returns 一个 ID 数组。我需要在每个 id 上调用另一个 $resource api,一旦加载了所有详细信息,我希望继续进行原始调用。

MyFactory.loadChildren(id).then(saveSuccess, saveFail);
MyFactory.loadChildren = function(id) {
      return MyResource.children({
        id: id
      }).$promise

        .then(function(response) {
          _.each(response, function(c) {
            MyResource.details({id:c.id}).$promise.then(function(child){
             //do something with the child



            },function(){

            })
          });
          return //all the children details;
        });
    };

我希望在加载所有子详细信息后执行 saveSuccess。我该怎么做?

您需要使用$q.all。因此,您的 _.each 将填充一个 promises 数组,您将调用 $q.all(thatArray)。 $q.all(thatArray) 中的函数将获得所有这些调用结果的数组,您可以执行 then() 来进行最后一次调用。 https://www.jonathanfielding.com/combining-promises-angular/