将多个$ http合并为一个以解决范围问题

时间:2014-04-24 15:03:06

标签: javascript ajax angularjs

我有以下代码的多个;我该如何结合所有这些?因为在$ http之外无法访问$ scope.mydata甚至全局var mydata。

   $http({
    url: "php/mainLoad.php",
    method: "GET",
    params: {"userId":"1"}
    }).success(function(data, status, headers, config) {

        $scope.mydata = data;
        mydata = data;
    }).error(function(data, status, headers, config) {
       // $scope.status = status;
       alert(status);
    });

1 个答案:

答案 0 :(得分:0)

使用承诺。 $ http是一个承诺,就像$ q对象一样。首先注入$ q,然后执行:

call1 = $http ({});
call2 = $http ({});
call3 = $http ({});

$q.all ([call1, call2, call3])
.then(function(response) {
    responseFromFirstCall = response[0];
    responseFromSecondCall = response[1];
    responseFromThirdCall = response[2];
}, function(errResponse) {
    firstErrorResponse = errResponse;
});

.then(function...中的函数只有在解析了所有调用(promises)时才会触发。如果任何一个呼叫被拒绝,第二个函数将调用,而errResponse将是第一个拒绝呼叫的响应。第二个参数,即。第二个功能是可选的。