我正在使用Angularjs,并且我已经使用返回promises的倍数函数来创建此服务。
angular.module('yoApp')
.factory('serviceAjax', function serviceAjax($http) {
return{
configDataSets:function(path){
return $http.get(path);
},
fileList: function(site_url,dataSet,varName,region,date){
return $http.get(site_url + "mwf/" + dataSet + "/" +varName + "/" + region + "/" + date + "/filelist/");
},
config: function(site_url,dataSet){
return $http.get(site_url + "mwf/" + dataSet + "/config/");
},
}});
控制器代码
我已经做过类似的事情,但是因为我可能会有更多请求链接,我认为这不是最好的方法:
serviceAjax.config(site_url,$scope.dataset).then function(data){
$scope.config=data.data;
serviceAjax.configDataSets("images/configDatasets.json").then(function(data){
$scope.configDatasets = data.data;
});
});
我想要做的是先在我的控制器中调用 config ,然后等待它完成,然后调用 configDataSets 。什么是最好的方法,我试着看看$ q和不同,但我似乎无法弄清楚如何做到这一点。任何帮助都会很棒!
答案 0 :(得分:1)
只需使用promise承诺的.then
方法:
serviceAjax.config(function(response) {
// use response.data from first call
...
}).then(function() {
return serviceAjax.configDataSets("images/configDatasets.json");
}).then(function(response) {
// use response.data from second call
...
});
另外,如果您的HTTP服务遵循典型的REST用法,请考虑使用$resource
而不是$http
。