如何在angularjs中实现级联http post调用?

时间:2017-10-13 10:13:13

标签: angularjs synchronous deferred sendasynchronousrequest

我需要从角度控制器进行两次http.post()调用,第一次调用的结果将在下一次调用中使用。除非我们收到前一个结果,否则不应进行下一次调用。 整个逻辑需要在循环中重复。

逻辑---> 为1至5  function1 - > http.post(object1)返回带有数据的延迟保证,例如ID1 使用id1作为下一个调用的参数 object2.id = ID1 function2 ---> http.post(object2)返回一些数据。

1 个答案:

答案 0 :(得分:0)

链接你的电话是要走的路。一旦httpCall1被解析,它将使用第一个响应调用httpCall2。

$scope.amountOfCallsToMake = 5;
$scope.results = [];

$scope.makeCalls = function(){
  for(callIndex = 0; callIndex < $scope.amountOfCallsToMake; callIndex++){
    $scope.httpCall1().then(function success(response){
      return $scope.httpCall2(response.data);
    }).then(function success(response){
      $scope.results.push(response.data);
    }
  }
}

$scope.httpCall1 = function(){
  return $http({
    method: 'POST',
    url: //Somewhere
  )};
}

$scope.httpCall2 = function(callResponse){
  return $http({
    method: 'POST',
    url: //Somewhere else,
    data: {
      parameter: callResponse
    }
  )};
}