我正在使用 Angularjs,并且我已经使用多个返回 Promise 的函数来提供此服务。
我的 AJAX 服务:
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/");
},
}});
Controller 代码
我已经做过类似的事情,但由于我可能有更多的请求被链接,我认为这不是最好的方法:
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;
});
});
我想要做的是首先调用我的 Controller config ,然后等待它完成,然后调用 configDataSets 。最好的方法是什么,我尝试查看 $q 并有不同意见,但我似乎不知道该怎么做。任何帮助都会很棒!
最佳答案
只需使用 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 服务遵循典型的 RESTful 用法,请考虑使用 $resource
而不是 $http
。
关于javascript - 使用 Angularjs 链接异步 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875177/