为什么我会得到一个不同的arrays?

美好的一天。 给出不同的数组我有问题;

我的代码接下来:

setInterval(function() { var TestName = []; var requests = []; TestName.push('0'); for($i=1; $i<8; $i++) { var id = $i; requests.push($.post("./Scripts/", { record:id, opt:'get_test' }, function(data){ TestName.push(data); })); } $.when.apply($,requests).done(function(){ for($i=1; $i<8; $i++) { $('#test'+$i).html('').html(TestName[$i]); } alert(TestName); }); }, 15000); 

这段代码有效,但每次我得到不同的数组……

例如:

alert(TestName); 结果一:

 0, , , , , , , , 

alert(TestName); 结果二:

 0, , , , , , ,  

正如您可以在每次交换座位时看到数组的元素,有时数组的元素排列顺序错误。

请告诉我代码中可能出错的地方?

每次数组不同的原因是您正在运行异步请求,然后从回调中填充。 每次执行此操作时,您的请求都会以不同的顺序完成,因此会以不同的顺序填充数组。

您不能依赖于在执行中的任何特定点调用的异步请求回调,它们可以随时调用,具体取决于响应何时返回。