javascript - 使用 Angularjs 链接异步 AJAX 调用

标签 javascript angularjs ajax

我正在使用 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/

相关文章:

javascript - AngularJS - 忽略源映射的堆栈跟踪

javascript - 如何在 AngularJS 中将受限范围传递给小部件

javascript - 使用 AJAX 将变量从动态 html 表传递到 php 更新查询

php - 尝试使用 AJAX 上传文件时 FormData 对象始终为空

javascript - Jquery 调用更改事件的操作,然后以 div 形式反射(reflect)该值

javascript - 处理 ruby​​ 中的正则表达式

javascript - 我在数组中预加载图像,无法调用 ".src"属性?

javascript - AngularJS 三元表达式无效

javascript - JQuery onClick 不响应按钮

javascript - 在 ajax 成功函数中显示隐藏的 div 以显示剩余的注册表单