Ich habe das folgende Layout für ein Versprechen Kette in einem Service ...
this.getData = function(params) {
var promise = $http({}).then(function(firstdata) {
// work on the first data and then call a number of promises for fetch additional data
var promises = list.map(function(item) {
return $http({}).then(function(result2) {
// this is an amalgamation of all the data from the various calls
return finalData;
});
return $q.all(promises);
})
});
return promise;
}
Da ist in meinem Controller ich bin
tunmyService.getData().then(function(data){
});
Die Problem liegt in der Tatsache, dass THEN im Controller ausgeführt wird, bevor PROMISES (beachten Sie den Plural) einen Wert zurückgegeben hat.
Dies ist wahrscheinlich etwas albern, aber irgendwelche Gedanken darüber, wie dies zu vereinfachen/es funktioniert, wäre praktisch!
Warum haben Sie zwei Versprechen aus den '.map' Callbacks zurückgegeben (1. stammt von' $ http' Aufruf und zweitens von '$ q.all')? –
Weil sie nacheinander ausführen müssen? –
Also ersten Anruf machen-> eine Reihe anderer generieren-> die Daten aus dem ersten und zweiten Anruf zusammen-> Rückmeldedaten –