Si consideri il codice:
var myApp = angular.module('myApp', []);
Le rotte:
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) {
});
});
}
}]);
Sopra ho nidificato 2 chiamate all'interno di uno come dipendono dai dati restituiti dalla chiamata genitore.
Cosa voglio fare: restituire il Resolver quando tutti hanno completato e non solo la chiamata genitore.
Non riesco a utilizzare $ q.all() perché 2 delle chiamate dipendono dalla prima chiamata.
In breve, myAppController deve essere caricato solo dopo che tutte e 3 le chiamate sono state completate.
Hi Ajay! Grazie per la risposta immediata. Ma pensi che sarei in grado di passare i dati restituiti dalla prima chiamata alle chiamate successive se utilizzo il concatenamento? – AlwaysALearner
sì, i dati all'interno di ogni funzione sono i dati restituiti dal precedente –
Il concatenamento non si adatta molto bene alle mie esigenze. Sono andato per le chiamate annidate. Ma $ q mi ha davvero aiutato a sistemare la cosa. Grazie. Votato! :) – AlwaysALearner