Обещания цепочки Angularjs и $ q

при выполнении кода сначала отображается предупреждение («обещание C сделано»), а затем предупреждение («обещание C»); отображается последним, из-за этого данные не отображались должным образом из функции Displaydata(); из бело кода.

App.controller("Ctrl", function ($scope, $http, $location, $window, $sce, $q) {

    var promiseA = getMA(Id).then(function () {
    alert("GOT MA data from API call");
    // doing some stuff with MA data
      ...
    }
    var promiseB = getMB(Id).then(function () {
    alert("GOT MB data from API call");
    // doing some stuff with MBdata
      ...
    }
    var promiseC = getMC(Id).then(function () {
    alert("GOT MC data from API call");
    // doing some stuff with MC data
      ...
      getotherdata(MC.Id).then(function () {
      ..
      }
     ..
      alert("promiseC");
   }


   var promiseB = promiseA.then(function (result) {
            alert("promiseA done");
    });
    var promiseC = promiseB.then(function (result) {      
        alert(" promiseB done");      
    });

    var promiseD = promiseC.then(function (result) {
            alert("promiseC done");
            Displaydata(); 
    });
}

Как я могу заставить работать правильно, чтобы сначала отображалось предупреждение («обещание C»), а затем предупреждение («обещание C сделано»).

Также пробовал способом ниже, но та же проблема, что и выше, в цепочке обещаний.

    var promiseA = function(){
     var deferedA = $q.defer(); 
        deferedA.resolve();

       return deferedA.promise;
    }
    var promiseB = function(){
    var deferedB = $q.defer(); 
        deferedB.resolve();

       return deferedB.promise;
    }
    var promiseC = function(){
  var deferedC = $q.defer(); 
  alert("promise c");
    deferedC.resolve();

   return deferedC.promise;
}
$q.all([promiseA, promiseB, promiseC]).then(function () { 
  alert("all done");
  Displaydata();
})

person user11130182    schedule 26.04.2019    source источник