1

よくわかりません。このコードの場合:

function prepareit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

function testit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list);
    testit(list);
});

「prepareit」が完了したら、関数「testit」を実行する必要があります。私はすでに「when-then」メソッドを試しましたが、関数は同時に開始されます。

(私の悪い英語でごめんなさい)

4

2 に答える 2

1

すべての ajax リクエストが完了したときに解決される遅延オブジェクトを作成します。

function prepareit(list){
    var defArr = [];
    for(i=0;i<list.length;i++){
         var test = list[i];
         defArr.push($.ajax({....}));
    }
    return $.when.apply($,defArr);
}

function testit(list){
    var defArr = [];
    for(i=0;i<list.length;i++){
         var test = list[i];
          defArr.push($.ajax({....}));
    }
    return $.when.apply($,defArr);
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list).done(function(){
        testit(list).done(function(){
            alert("All done!");
        });
    });
});
于 2012-11-14T16:42:12.377 に答える
0

次のようtestitに、ajax リクエストの success 関数を呼び出すことができます。prepareit

function prepareit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({ success: function (data) { testit(list); } });
    }
}

function testit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list);
    //testit(list);
});

ただし、「テスト」の前にリスト全体が「準備」されていることに依存している場合、これは機能しません。ajaxリクエストをループすることはこれを行うための最良の方法ではないと思います-可能であれば、複数回ループするのではなく、ajax呼び出しでリスト全体を渡すようにコードを変更する必要があります(何を達成しようとしているのか正確にはわかりませんコース)。

于 2012-11-14T16:39:53.603 に答える