USE CASE: I have to do 3 async request when presenting the page, if you click in a button i have to call the same 3 request but with different GET params
When each of the requests resolves, I uses $scope.list.push(); because I need to show only those request that resolved OK because of those 3 request it is possible that 1 or more fails. I have some cases that it just takes too long to resolve and if you click on the button again this is what happens: original: /url1 RESOLVED /url2 RESOLVED /url3 WAITING .... click on my button after X seconds: /url4 RESOLVED /url5 RESOLVED /url6 RESOLVED /url3 RESOLVED (it was pending but it resolved after I click) So I get an array with 3 OK data and 1 of the previous data. My code: $scope.cotizar = function () { $scope.cargando = true; $scope.cotizaciones = []; $http.get("/aseguradora1/cotizar?" + jQuery.param($scope.data),{timeout: 10 *1000}) .success(function (response) { $scope.data.cobertura2 = $scope.data.cobertura; $scope.data.deducibles2 = $scope.data.deducibles; $scope.cotizaciones.push(response); }).then(function (){ $scope.cargando = false; }); $http.get("/aseguradora2/cotizar?" + jQuery.param($scope.data),{timeout: 10 *1000}) .success(function (response) { $scope.data.cobertura2 = $scope.data.cobertura; $scope.data.deducibles2 = $scope.data.deducibles; $scope.cotizaciones.push(response); }).then(function (){ $scope.cargando = false; }); $http.get("/aseguradora3/cotizar?" + jQuery.param($scope.data),{timeout: 10 *1000}) .success(function (response) { $scope.data.cobertura2 = $scope.data.cobertura; $scope.data.deducibles2 = $scope.data.deducibles; $scope.cotizaciones.push(response); }).then(function (){ $scope.cargando = false; }); }; $scope.cotizar(); I tried something like this but the thing is if I call canceller.resolve() right after the method call, it wont even do the requests: $scope.cotizar = function () { var canceller = $q.defer(); *canceller.resolve(); //it wont even let the following requests instead of cancelling the previous ones* $scope.cargando = true; $scope.cotizaciones = []; $http.get("/aseg1/cotizar?" + jQuery.param($scope.data),{timeout: canceller.promise}) .success(function (response) { $scope.data.cobertura2 = $scope.data.cobertura; $scope.data.deducibles2 = $scope.data.deducibles; $scope.cotizaciones.push(response); }).then(function (){ $scope.cargando = false; }); $http.get("/aseg2/cotizar?" + jQuery.param($scope.data),{timeout: canceller.promise}) .success(function (response) { $scope.data.cobertura2 = $scope.data.cobertura; $scope.data.deducibles2 = $scope.data.deducibles; $scope.cotizaciones.push(response); }).then(function (){ $scope.cargando = false; }); $http.get("/aseg3/cotizar?" + jQuery.param($scope.data),{timeout: canceller.promise}) .success(function (response) { $scope.data.cobertura2 = $scope.data.cobertura; $scope.data.deducibles2 = $scope.data.deducibles; $scope.cotizaciones.push(response); }).then(function (){ $scope.cargando = false; }); }; $scope.cotizar(); Is there something like $http.cancelAll();? -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to angular+unsubscr...@googlegroups.com. To post to this group, send email to angular@googlegroups.com. Visit this group at https://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.