$ Http.get recursivo en bucle for

Yo uso Angular 1.5. Tengo una función que consulta Categorías, luego para cada categoría, consulta Productos. Quiero mostrar un mensaje después de recuperar todos los productos, cuántos se recuperaron. Produce 0. ¿Cuál es la solución?

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!."));
    });
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta