我可以将jQuery的$ .when方法的结果分组吗?

时间:2012-07-29 12:49:53

标签: jquery promise

我有以下代码:

$('#remove-commercial-products-modal').find('form').submit(function() {                              
    var promises = [];
    var $modal = $(this).closest('.modal');                                                          

    $(this).find('input:checkbox:checked').each(function() {                                         
        promises.push(                                                                               
            $.ajax({
                url: '/commercial/products/unclaim/' + $(this).val() + '/',                          
                dataType: 'json',                                                                    
                timeout: 10000,                                                                      
                cache: false                                                                         
            }));                                                                                     
    });                                                                                              

    $.when.apply($, promises).done(function(result) {                                                
        $modal.modal('hide');                                                                        
    });                                                                                              

    return false;                                                                                    
});

因此,当我提交表单时,我会收集已选中复选框的值,然后创建了一个promises数组,每个promise都是一个$ .ajax调用。

执行我的调用,执行.done函数中的代码。

但是,我认为.done期待数字的参数,每个承诺一个。但是我不知道我提前有多少,而且我希望得到一系列结果(每一个都是$ .ajax调用的响应。)

有人知道我是否可以将我的回复分组? 谢谢!

1 个答案:

答案 0 :(得分:3)

$.when.apply($, promises).done(function() {
    var l = arguments.length,
        i,
        jqxhr;

    for( i = 0; i < l; ++i ) {
        jqxhr = arguments[i][2]; //The i:th jQXHR passed  
    }                                                              
});     

请参阅docs