0

同じページを異なるパラメーターで同時に6回ロードし、すべてのページがロードされた後に何かをする必要があります.jQueryの遅延関数はそれを行うことができます.最も簡単な方法は.

$.when(
        $.post('ajax1.php', {val: 1}),
        $.post('ajax2.php', {val: 2}),
        $.post('ajax3.php', {val: 3}),
        $.post('ajax4.php', {val: 4}),
        $.post('ajax5.php', {val: 5}),
        $.post('ajax6.php', {val: 6})

    )
    .done(function() {
        console.log('all done');
    });

しかし、実際にはまったくスマートではないように見えます。関数ごとにロードし、繰り返し作業に for ループを使用したいと考えています。

var done = $.Deferred();

$.when(loadPage(done))
    .done(function() {
        console.log("all done");
    });

function loadPage(done) {
    for (i = 1; i <= 6; i++) {
        $.post("ajax.php", {val: i} function(response) {
            console.log(response);
        });
    }

    return done.resolve();
}

しかし、6 ページすべてが完了した後で resolve() を返す方法がわかりません。

4

1 に答える 1

0

$.when同じことを達成するために使用できます

loadPage(done).done(function(){
    console.log("all done");
})

function loadPage() {
    var requests = [],
        xhr;
    for (i = 1; i <= 6; i++) {
        xhr = $.post("ajax.php", {
            val: i
        }, function (response) {
            console.log(response);
        });
        requests.push(xhr)
    }

    return $.when.apply($, requests)
}
于 2013-10-31T07:38:34.827 に答える