Rozważmy kod:
var myApp = angular.module('myApp', []);
trasach:
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'app.html',
controller:myAppController,
resolve:{
resolveData:function(Resolver){
return Resolver();
}
}
});
});
Resolve:
myApp.factory('Resolver', ['$http', function($http){
return function(){
return $http({url: '/someurl',method: "GET"}).then(function(data) {
// dependent call 1
$http({url: '/someotherurl',method: "GET" }).then(function(data) {
});
// dependent call 2
$http({url: '/someanotherurl',method: "GET" }).then(function(data) {
});
});
}
}]);
Przede Mam zagnieżdżona 2 połączeń wewnątrz jednego jako są zależne od danych zwróconych przez połączenie rodzica.
Co chcę zrobić: zwrócić Resolver, gdy wszystkie z nich zostały zakończone, a nie tylko połączenie rodzica.
Nie mogę użyć $ q.all(), ponieważ 2 z połączeń są zależne od pierwszego połączenia.
W skrócie, myAppController może być załadowany dopiero po zakończeniu wszystkich 3 połączeń.
Hi Ajay! Dziękuję za natychmiastową odpowiedź. Ale czy myślisz, że będę w stanie przekazać dane zwrócone przez pierwsze połączenie do kolejnych połączeń, jeśli użyję łączenia? – AlwaysALearner
tak dane wewnątrz każdej funkcji są dane zwrócone z poprzedniego –
Łańcuchowanie nie pasowało do mojej potrzeby bardzo dobrze. Poszedłem na połączenia zagnieżdżone. Ale $ q naprawdę pomogło mi to naprawić. Dziękuję Ci. Voted Up! :) – AlwaysALearner