Angularjs多个$ http.get请求

我需要做两个$ http.get调用,并且需要将返回的响应数据发送到我的服务以进行进一步计算。

我想要做如下的事情:

function productCalculationCtrl($scope, $http, MyService){
    $scope.calculate = function(query){

            $http.get('FIRSTRESTURL', {cache: false}).success(function(data){
                $scope.product_list_1 = data;
            });

            $http.get('SECONDRESTURL', {'cache': false}).success(function(data){
                $scope.product_list_2 = data;
            });
            $scope.results = MyService.doCalculation($scope.product_list_1, $scope.product_list_2);
        }
    }

在我的标记中,我称之为

<button class="btn" ng-click="calculate(query)">Calculate</button>

由于$ http.get是异步的,因此在传递doCalculation方法时我没有获取数据。

任何想法如何实现多个$ http.get请求,并像上述实现一样将响应数据传递到服务中?

提前致谢。


你需要的是$q.all

$q添加到控制器的依赖项,然后尝试:

$scope.product_list_1 = $http.get('FIRSTRESTURL', {cache: false});
$scope.product_list_2 = $http.get('SECONDRESTURL', {'cache': false});

$q.all([$scope.product_list_1, $scope.product_list_2]).then(function(values) {
    $scope.results = MyService.doCalculation(values[0], values[1]);
});

有一个简单而且很冒险的方式:在两个回调中调用计算。 第一次调用(以先到者为准)会看到不完整的数据。 它应该什么也不做,但快速退出。 第二次调用可以看到产品列表并执行作业。

链接地址: http://www.djcxy.com/p/42179.html

上一篇: Angularjs multiple $http.get request

下一篇: May a URL contain arbitrary binary data in a GET