美好的一天。 给出不同的数组我有问题;
我的代码接下来:
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,
<a href="#"><img src="./images/test1.png"></a>,
<a href="#"><img src="./images/test2.png"></a>,
<a href="#"><img src="./images/test3.png"></a>,
<a href="#"><img src="./images/test4.png"></a>,
<a href="#"><img src="./images/test5.png"></a>,
<a href="TestTestTestTestTest.php"><img src="./1358997710.jpg"></a>,
<a href="#"><img src="./images/test7.png"></a>,
alert(TestName);
结果二:
0,
<a href="#"><img src="./images/test1.png"></a>,
<a href="#"><img src="./images/test2.png"></a>,
<a href="TestTestTestTestTest.php"><img src="./1358997710.jpg"></a>,
<a href="#"><img src="./images/test3.png"></a>,
<a href="#"><img src="./images/test5.png"></a>,
<a href="#"><img src="./images/test4.png"></a>,
<a href="#"><img src="./images/test7.png"></a>
正如您可以在每次交换座位时看到数组的元素,有时数组的元素排列顺序错误。
请告诉我代码中可能出错的地方?
答案 0 :(得分:1)
每次数组不同的原因是您正在运行异步请求,然后从回调中填充。每次执行此操作时,您的请求都会以不同的顺序完成,因此会以不同的顺序填充数组。
您不能依赖于在执行中的任何特定点调用异步请求回调,它们可以随时调用,具体取决于响应何时返回。