angular——访问多个http调用的数据——如何解析承诺

angular——访问多个http调用的数据——如何解析承诺,http,angularjs,Http,Angularjs,我被一些我认为应该直截了当的事情卡住了。我需要从三个不同的ajax调用中获取数据,组合并处理这三个调用,然后向用户显示生成的数组 以最简单的形式,我的代码如下所示: function giftControler ($scope, $http) { var names = $http.get("names.json"), naughty = $http.get("naughty.json"), nice = $http.get("nice.json"); 我知道我的变

我被一些我认为应该直截了当的事情卡住了。我需要从三个不同的ajax调用中获取数据,组合并处理这三个调用,然后向用户显示生成的数组

以最简单的形式,我的代码如下所示:

function giftControler ($scope, $http) {
  var names = $http.get("names.json"),
      naughty = $http.get("naughty.json"),
      nice = $http.get("nice.json");
我知道我的变量是分配给承诺的,而不是实际结果,并且http请求已传递到事件队列。如果我使用可执行语句来跟踪这些变量,那么这些变量将是未定义的。我不明白如何等待这些承诺得到解决,以便继续处理它们

我想做的是立即添加代码:

      for (var i=0; i<names.length; i++){
        for (var j=0; j<nice.length; j++){
          if (names[i] === nice[j]){
            names[i] = names[i] + "--Yay!!";
          };
        };
      };                
      $scope.kids = names;

for(var i=0;i您可以使用$q的函数'all':

函数giftcontroller($scope、$http、$q){
var names=$http.get(“names.json”),
淘气=$http.get(“淘气.json”),
nice=$http.get(“nice.json”);
$q.all([name,顽皮,nice])。然后(函数(arrayOfResults){
…当所有承诺都得到解决时,将调用此回调
});
这条路有点干净


这里是文档修订的链接:

谢谢!这似乎奏效了。我永远也不知道你是如何从极其稀少的API文档中梳理出这一功能的。也许随着Angular在谷歌的资金支持下不断壮大,他们可以雇一位技术作家来修改文档。哇,我需要更多的时间来阅读这些文档小心。这样做会使一切变得更简单。如果一个调用失败会发生什么?值得注意的是,在arrayOfResults中,“每个值对应于承诺数组/哈希中相同索引/键处的承诺”如果我想为不同的页面使用不同的$http get方法,但它们使用的是单个控制器,如何?