在for循环angularjs中进行同步http调用

时间:2015-07-08 12:27:06

标签: javascript angularjs http get

我有一个url数组,要求是我必须以同步方式发出http.get请求。只有在第一个url调用成功后,才应调用第二个url

<%
Response.Write "<&#37=Count&#37>"
%>

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您真正想要的是按顺序顺序,而不一定是同步。

在这种情况下,不要使用循环(因为它是同步的)。只需拨打下一个电话以响应之前的通话。

简化示例:

var i = 0;
makeRequest(urlArray[i], function success() {
  var nextURL = urlArray[++i];
  if (nextURL) {
    makeRequest(nextURL, success);
  }
});

其中makeRequest是发出Ajax请求并在成功时调用回调的函数:

function makeRequest(url, callback) {
    $http.get(url).success(callback);
}

答案 1 :(得分:1)

我假设您要按顺序调用它们,在这种情况下,您可以使用类似递归的方式,在.success回调中调用函数

var currentURL; // calculate teh currentURL
$scope.alpha(currentURL);

$scope.alpha = function (newURL) {
    $http.get(newURL) // these calls should be synchronous
    .success(function (response, status, headers, config) {
        //get the response
        //generate the new currentURL as per your need

        //keep a break condition, to exit
        $scope.alpha(currentURL);

    })
    .error(function () {
    });
}

2)交替你可以$ q,延期电话来实现这个

希望这有帮助