Могу ли я сгруппировать результаты метода jQuery $.when?

StackOverflow https://stackoverflow.com//questions/11709377

  •  13-12-2019
  •  | 
  •  

Вопрос

У меня есть следующий код:

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

Итак, когда моя форма отправлена, я собираю значения установленных флажков и создаю массив обещаний, каждое из которых является вызовом $.ajax.

Мои вызовы выполняются, и код в моем .done функция выполнена.

Однако я думаю, что .done ожидает, что номер из аргументов, по одному для каждого обещания.Но я не знаю, сколько у меня есть заранее, и я надеялся на массив результатов (каждый из которых является ответом на вызов $.ajax.)

Кто-нибудь знает, могу ли я сгруппировать свои ответы?Спасибо!

Это было полезно?

Решение

$.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  
    }                                                              
});     

Видеть доктора

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top