2

本文展示了如何wait为动态数量的 ajax 请求完成。他执行以下操作:

var deferredArr = $.map($(".dynaload"), function(el, i) { 
    return $.ajax({ 
        url: $(el).data("loadUrl"), 
        success: function(html) { 
            $(el).html(html); 
        } 
    }); 
}); 
$.when.apply(this, deferredArr).then(function() { 
    alert("All Done Loading!"); 
});

问题是解决延迟的函数需要与延迟一样多的参数。所以,如果我这样做:

$.when.apply(this, deferredArr).then(function(data) { 
    alert("All Done Loading!"); 
});

然后data只是第一个承诺的结果。如何在不求助于将结果附加到数组中的情况下获得所有结果?

4

1 回答 1

3

具有未知数量参数的函数可以使用特殊arguments数组:

$.when.apply(this, deferredArr).then(function() { 
    for (var i = 0; i < arguments.length; i++) {
        console.log("Promise "+i+" returned: "+arguments[i]);
    }
    alert("All Done Loading!"); 
});

有关文档和更多参数使用示例,请参阅MDN 文档

于 2012-12-25T18:33:23.910 回答