Ho ereditato il codice JavaScript in cui il callback di successo di un gestore Ajax avvia un'altra chiamata Ajax in cui la callback di successo può o non può iniziare un'altra chiamata Ajax. Questo porta a funzioni anonime profondamente annidate. Forse c'è un modello di programmazione intelligente che evita l'annidamento profondo ed è più ASCIUTTO. Inoltre, c'è il problema delle variabili interne myVar1 e myVar2 che sono usate in tutte le funzioni.Schema di programmazione per appiattire callback ajax profondamente annidati?
jQuery.extend(Application.Model.prototype, {
process: function() {
var myVar1;
// processing using myVar1;
jQuery.ajax({
url:myurl1,
dataType:'json',
success:function(data) {
var myVar2;
// process data using myVar1, set state of myVar2,
// then send it back
jQuery.ajax({
url:myurl2,
dataType:'json',
success:function(data) {
// do stuff with myVar1 and myVar2
if(!data.ok) {
jQuery.ajax({
url:myurl2,
dataType:'json',
success:mycallback
});
}
else {
mycallback(data);
}
}
});
}
});
}
});
Leggermente relazionato. Giocare AJAX "ping-pong" con il server è un modo sicuro per creare tempi di attesa extra. Potresti considerare se è possibile eseguire il lavoro in una sola richiesta, anche se ciò significa trasmettere più dati. – aaaaaaaaaaaa