Javascript 循环中多个AJAX调用的回调

Javascript 循环中多个AJAX调用的回调,javascript,jquery,Javascript,Jquery,我有以下代码: var results = []; for(var i = 0; i < 4; i++){ $.ajax(... results.push(response)); } var结果=[]; 对于(变量i=0;i{ //处理错误 }); 不要预先创建一个结果数组,而是创建一个承诺数组($.ajax调用视为承诺),然后您可以在数组上使用Promise.all。所有调用解析后,Promise.all将解析为四个响应的数组: const promises = []; for

我有以下代码:

var results = [];

for(var i = 0; i < 4; i++){
   $.ajax(... results.push(response));
}
var结果=[];
对于(变量i=0;i<4;i++){
$.ajax(…results.push(response));
}

我想知道这4个ajax调用什么时候完成,然后对结果数组执行一些操作,我如何才能做到这一点?

不要事先创建一个
结果
数组,而是创建一个承诺数组(
$。ajax
调用被视为承诺),然后您可以在数组上使用
承诺。所有
。所有调用解析后,
Promise.all
将解析为四个响应的数组:

const promises = [];
for (let i = 0; i < 4; i++) {
  promises.push($.ajax(....));
}
Promise.all(promises).then((results) => {
  // do stuff with results
})
.catch((err) => {
  // handle errors
});
const promises=[];
for(设i=0;i<4;i++){
promises.push($.ajax(..);
}
承诺。所有(承诺)。然后((结果)=>{
//用结果做事
})
.catch((错误)=>{
//处理错误
});

不要预先创建一个
结果
数组,而是创建一个承诺数组(
$.ajax
调用视为承诺),然后您可以在数组上使用
Promise.all
。所有调用解析后,
Promise.all
将解析为四个响应的数组:

const promises = [];
for (let i = 0; i < 4; i++) {
  promises.push($.ajax(....));
}
Promise.all(promises).then((results) => {
  // do stuff with results
})
.catch((err) => {
  // handle errors
});
const promises=[];
for(设i=0;i<4;i++){
promises.push($.ajax(..);
}
承诺。所有(承诺)。然后((结果)=>{
//用结果做事
})
.catch((错误)=>{
//处理错误
});

您可以引入一个计数器,该计数器在每个AJAX请求返回时递增。当计数器等于4时,可以对结果数组执行某些操作

(我也在用伪代码回应,因为我是在手机上输入的。)

var计数器=0;
var结果=[];
对于(变量i=0;i<4;i++){
$.ajax(…,函数(resp){
计数器++;
结果:推挤(resp);
如果(计数器==4){
//做事
}
}
}

您可以在每个AJAX请求返回时引入一个递增的计数器。当计数器等于4时,您可以对结果数组执行某些操作

(我也在用伪代码回应,因为我是在手机上输入的。)

var计数器=0;
var结果=[];
对于(变量i=0;i<4;i++){
$.ajax(…,函数(resp){
计数器++;
结果:推挤(resp);
如果(计数器==4){
//做事
}
}
}

谢谢,我想我还可以有一个计数器,它会随着时间的推移而增加。done()回调,然后检查计数器是否等于ajax调用的数量,然后执行一些操作,但我使用的是您的解决方案,因为它看起来更优雅……事实上,这种方法比我的方法更好,因为它允许错误处理。承诺也是一个整洁的功能。我将指出数组应该是一个常量(因为它已经是)这是一个简洁而彻底的回答。谢谢你,我想我还可以有一个计数器,它会随着时间的推移而增加。完成()回调,然后检查计数器是否等于ajax调用的数量,然后执行一些操作,但我使用的是您的解决方案,因为它看起来更优雅……事实上,这种方法比我的方法更好,因为它允许错误处理。承诺也是一个整洁的功能。我将指出数组应该是一个常量(因为它已经是)这是一个简洁而彻底的答案。我最后用了另一个答案,但这个也行,谢谢!我最后用了另一个答案,但这个也行,谢谢!