使用Angularjs链接异步AJAX调用

时间:2016-01-19 11:07:39

标签: javascript angularjs ajax

我正在使用Angularjs,并且我已经使用返回promises的倍数函数来创建此服务。

我的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/");
        },

      }});

控制器代码

我已经做过类似的事情,但是因为我可能会有更多请求链接,我认为这不是最好的方法:

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和不同,但我似乎无法弄清楚如何做到这一点。任何帮助都会很棒!

1 个答案:

答案 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