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