Angularjs 如何在循环中排序相同的ajax调用?

Angularjs 如何在循环中排序相同的ajax调用?,angularjs,ajax,Angularjs,Ajax,我使用以下代码从后端获取一些信息: 我希望一个接一个地触发ajax调用,而不是同时触发所有调用,这意味着每个ajax调用都将等待前一个调用完成。有人知道我的代码会有什么变化吗?看看 将多个承诺组合为一个承诺,在解析所有输入承诺时解析该承诺 编辑: 哎呀,我没读清楚$q、 all()等待所有承诺得到解决,您需要将它们链接起来,以便在一个承诺得到解决后调用另一个承诺: somepromise .then(function(response){

我使用以下代码从后端获取一些信息:

我希望一个接一个地触发ajax调用,而不是同时触发所有调用,这意味着每个ajax调用都将等待前一个调用完成。有人知道我的代码会有什么变化吗?

看看

将多个承诺组合为一个承诺,在解析所有输入承诺时解析该承诺

编辑: 哎呀,我没读清楚$q、 all()等待所有承诺得到解决,您需要将它们链接起来,以便在一个承诺得到解决后调用另一个承诺:

        somepromise
        .then(function(response){
            return $http({method:"some method",url:"some urlj",data:response});
        }).then(function(response2){
           //chain third and so on
        })

基本上,您需要返回承诺才能链接它们

是的,您可以按顺序使用$timeout服务进行呼叫,如下所示

angular.forEach(authors, function(author){
        var authorId = author.id;
        var url = contextPath + '/book/list/' + authorId;
        $timeout(function(){
        $http({
            method: 'GET',
            url: url
        })
        .then(function(response){
            author.books = response.data;
        })
    })},2000);//2000-> milliseconds; 

这会使您的每2秒获得一次请求。如果您知道您的调用需要更多的时间,请根据需要设置超时值。

它仍然会同时触发所有ajax调用。我的ajax调用是相同的,在某些情况下(200个调用),它们可能非常多。所以我不能使用你的代码,因为这将是一个很大的编写。
angular.forEach(authors, function(author){
        var authorId = author.id;
        var url = contextPath + '/book/list/' + authorId;
        $timeout(function(){
        $http({
            method: 'GET',
            url: url
        })
        .then(function(response){
            author.books = response.data;
        })
    })},2000);//2000-> milliseconds;