then - http delete
Solicitud mĂșltiple de Angularjs $ http.get (2)
Hay una manera simple y hacky: llamar al cálculo en ambas devoluciones de llamada. La primera invocación (lo que ocurra primero) ve datos incompletos. No debería hacer nada más que salir rápidamente. La segunda invocación ve las listas de productos y hace el trabajo.
Necesito hacer dos llamadas a $ http.get y necesito enviar datos de respuesta devueltos a mi servicio para hacer más cálculos.
Quiero hacer algo como a continuación:
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);
}
}
En My markup lo estoy llamando así
<button class="btn" ng-click="calculate(query)">Calculate</button>
Como $ http.get es asíncrono, no obtengo los datos cuando paso el método doCalculation.
¿Alguna idea de cómo puedo implementar múltiples solicitudes de $ http.get y trabajar como en la implementación anterior para pasar los datos de respuesta al servicio?
Gracias por adelantado.
Lo que necesitas es $q.all
.
Agregue $q
a las dependencias del controlador, luego intente:
$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]);
});