我在服务中有一个承诺链的以下布局......
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;
}
然后在我的控制器中我正在做
myService.getData().then(function(data){
});
问题在于控制器中的THEN在PROMISES(注意复数)之前执行了返回值。
这可能是愚蠢的事情,但任何关于如何简化/使它工作的想法都会很方便!
答案 0 :(得分:3)
目前,你的内部promises
($ q.all承诺)并未从promise变量返回。您还应该返回promises
(复数),以确保链应该起作用。
this.getData = function(params) {
var promise = $http({}).then(function(firstdata) {
// creating new promise array in `promises` function
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 promises; //returning inner promise
});
return promise;
}