Attendez que toutes les demandes $ http soient complétées dans les JL angulaires

J'ai une page que je peux faire un nombre différent de demandes $http fonction de la longueur d'une variable, et je souhaite envoyer les données à la portée uniquement lorsque toutes les demandes sont terminées. Pour ce projet, je ne veux pas utiliser jQuery, alors n'incluez pas jQuery dans votre réponse. Pour le moment, les données sont envoyées à la portée à mesure que chacune des demandes finit, ce qui n'est pas ce que je veux faire.

Voici le code que j'ai à ce jour.

 for (var a = 0; a < subs.length; a++) { $http.get(url).success(function (data) { for (var i = 0; i < data.children.length; i++) { rData[data.children.name] = data.children.age; } }); } 

Voici la partie dont je suis sceptique, parce que quelque chose doit être un argument pour $q.all() , mais il n'est pas mentionné sur les documents pour Angular et je ne sais pas ce qu'il est censé être.

 $q.all().then(function () { $scope.rData = rData; }); 

Merci pour toute aide.

$http call renvoie toujours une promesse qui peut être utilisée avec la fonction $q.all .

 var one = $http.get(...); var two = $http.get(...); $q.all([one, two]).then(...); 

La documentation est assez claire à ce sujet:

Tout (promesses)

Promesses – Un tableau ou hash de promesses.

Dans votre cas, vous devez créer un tableau et appuyer sur tous les appels dans la boucle:

 var arr = []; for (var a = 0; a < subs.length; ++a) { arr.push($http.get(url)); } $q.all(arr).then(function (ret) { // ret[0] contains the response of the first call // ret[1] contains the second response // etc. });