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();
}

但我不知道如何在完成六页后返回 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 回答