Ich habe 2 http Aufrufe Reslove vor der Initialisierung meines Controllers, derzeit mit Angular UI Router benötigt und ich habe Karte unter $ stateProvider.state ('stateName', {stateObject}) zu lösen mein stateobject als GebrüllLösen Sie mehrere Versprechen in Route Auflösung vor der Initialisierung Controller
$stateProvider.state('stateName', {
url : '/myURL',
params: {
data1: undefined,
data2 : undefined
},
resolve: {
dataTobeResolve : function($stateParams,$q) {
var deferred = $q.defer();
var deferredObj = {};
deferredObj.d1 = $q.defer();
deferredObj.d2 = $q.defer();
var result = {
data1: {},
data2: {}
}
if(angular.isDefined($stateParams.data1)) {
result.data1 = $stateParams.data1;
deferredObj.d1.resolve();
}
else {
httpCall().then(function(response) {
AsyncMethodCall(response.data).then(function(resolvedData) {
result.data1 = resolvedData;
deferredObj.d1.resolve();
});
});
}
if(angular.isDefined($stateParams.data2)) {
result.data2 = $stateParams.data2;
deferredObj.d2.resolve();
}
else {
AsyncMethodCall().then(function(resolvedData) {
result.data2 = resolvedData;
deferredObj.d2.resolve();
});
}
$q.all(deferredObj).then(function() {
deferred.resolve(result);
});
return deferred.promise;
}
}
});
wie immer trotz der deferredObj.d1 controll geht entschlossen zu sein, um dann (function() {}) von $ q.all (deferredObj), die unerwartete Verhalten ist, und ich glaube, dass alle von der Verheißungskarten von deferredObj sollten aufgelöst werden, bevor diese Zeile ausgeführt wird, mein Controller wird initialisiert, obwohl eines der Versprechen gelöst wurde.