AngularJS Chaining $ http调用

时间:2014-12-17 10:06:28

标签: angularjs web-services

我仍然是AngularJS的新手,并且正在努力解决以下问题。

我有很多我需要使用的网络服务,其中很多网站服务依赖另一方的数据来成功拨打下一个电话。

例如,第一个Web服务将检索个人档案列表。

ip.controller("ProfilesCtrl", function($scope, $http) {

  $http.post("Profile_List.asp").success(function(data) {
    $scope.profiles = data;
  }).error(function() {
    alert("An unexpoected error ocurred while loading profiles!");
  });

});

Profiles返回一个JSON对象。 返回的数据:

{
  "Success": true,
  "ErrorMessage": "",
  "Objects": [{
    "GUID": "208FF69D-A4EB-4760-B2ED-414C900F4AAC",
    "Name": "John Doe",
    "Status": false
  }, {
    "GUID": "BC5C53FD-5CA7-4DBE-8594-D26AD88B758B",
    "Name": "Jane Doe",
    "Status": true
  }, {
    "GUID": "2FCD677B-DA36-4014-823A-9BDD1A72AD66",
    "Name": "Anonymous",
    "Status": true
  }]
}

好的,所以在我进行初始调用之后,我需要将每个Profile Object的GUID发送到另一个Web服务。此服务将使用GUID来确定该特定配置文件的ID。

来自第二个Web服务的数据将仅返回第一个呼叫的GUID的ID。

如何链接这些$ http电话?创建一个新的json对象并使用那里的数据会更好吗?

我在使用ajax之前已经完成了这个。

*关于我的控制器代码的另一个问题,就是这样很好,或者作为服务,提供商或工厂做$ http呼叫会更好吗?我该怎么做呢?

获得上述AngularJS代码的任何帮助/链接都将不胜感激。

请询问是否有任何不清楚的地方。

1 个答案:

答案 0 :(得分:2)

只需在“成功”处理程序中调用执行下一个调用。

$http.post("Profile_List.asp").success(function(data) {
    $scope.profiles = data;
    //first call succeeded, and we have the data. call method 2
    executeStep2($scope.profiles);

  })


function executeStep2(profiles)
{
   $http.post("second_method") // etc. (you can just send profiles as post data here)
}