0

良い一日。異なる配列を与えることに問題があります。

次の私のコード:

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); 結果 1:

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); 結果 2:

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>

ご覧のとおり、配列の要素は席を交換するたびに配置され、配列の要素が間違った順序で配置されることがあります。

コードのどこにエラーがあるのか​​教えてください。

4

1 に答える 1

1

配列が毎回異なる理由は、非同期リクエストを実行してからコールバックからデータを入力しているためです。これを行うたびに、リクエストが異なる順序で終了するため、配列に異なる順序で入力されます。

非同期リクエストのコールバックが実行中の特定の時点で呼び出されることに依存してはなりません。応答がいつ戻ってくるかによって、いつでも呼び出すことができます。

于 2013-01-29T11:55:01.557 に答える