私は角度1.5を使用します。私はカテゴリーを照会する関数を持っています。それから各カテゴリーについて、それは商品を照会します。私はすべての製品が回収された後にメッセージを表示したいが、回収された製品の数は表示されたい。 0を出力します。解決策は何ですか?
function getProducts() {
vm.categories = [];
var prodcount = 0;
$http.get("localhost/menu/1/categories")
.then(function(response) {
var categories = response.data;
angular.forEach(categories, function(cat) {
$http.get("localhost/category/" + cat.id + "/products")
.then(function(response) {
cat.products = response.data;
vm.categories.push(cat);
prodcount += cat.products.length;
});
});
$mdToast.show($mdToast.simple().textContent("retrieved " + vm.categories.length + " categories and, " + prodcount + " products!."));
});
}
を終了するのを待つために
$q.all
を使用することができますあなたの製品?これは本当に奇妙に見えますし、確かにあなたのパフォーマンスに影響を与えます – MayK多くの約束を待つのに '$ q.all'を使うことができます。http://stackoverflow.com/questions/23931846/wait-for-all-http-requests 〜完全な角度のjs。また、あなたのサーバーを飽和させないために、次のコールを実行する前に、すべてのコールが完了するのを待つことができます。もちろん、クライアント側のループではなく、1つのサーバー・コールですべてを取り出すことが最善です。 – floribon
私はいつもAJAX要求を持つ「プロバイダ」をAngularで使用してきました。 – circusdei