Posso raggruppare i risultati del metodo $ .quando?
Domanda
Ho il seguente codice:
$('#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;
});
.
Quindi, quando viene inviato il mio modulo, raccolgo i valori delle caselle di controllo selezionati e ho creato una serie di promesse, ognuna delle quali è una chiamata $ .ajax.
Le mie chiamate vengono eseguite e viene eseguito il codice nella mia funzione .done
.
Tuttavia, penso che .done
stia aspettando un numero di argomenti, uno per ogni promessa.Ma non so quanti mi sono in anticipo, e speravo in una serie di risultati (ognuno è la risposta della chiamata $ .ajax.)
Qualcuno sa se posso raggrupparsi le mie risposte? Grazie!
Soluzione
$.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
}
});
.
Vedi Documenti
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow