Dal momento che l'utilizzo di $.Deferred
ho eseguito questo scenario un paio di volte: ho un elenco di valori ognuno dei quali produce un oggetto rinviato in qualche modo e voglio eseguire una richiamata una volta tutte le Gli oggetti posticipati sono risolti.Gestione di array di oggetti posticipati
Un esempio più concreto sarebbe qualcosa di simile:
var urls = [ 'foo.com', 'bar.com', 'baz.com', 'qux.com' ],
defers = [], defer;
for(var i = 0, j = urls.length; i < j; i++){
defer = $.ajax({
url: 'http://' + urls[ i ]
});
defers.push(defer);
}
$.when.apply(window, defers).done(function(){
// Do Something
});
C'è una soluzione più elegante rispetto al codice nel mio esempio?
Perché pensi che non sia elegante? – topek
Dopo aver scritto un codice come questo per la terza volta, ho iniziato a pensare che fosse uno scenario abbastanza comune e che potesse essere gestito dal framework degli Oggetti Differiti in un modo migliore che stavo semplicemente trascurando. –