He heredado código JavaScript donde la devolución de llamada exitosa de un manejador Ajax inicia otra llamada Ajax donde la devolución de llamada correcta puede o no iniciar otra llamada Ajax. Esto lleva a funciones anónimas profundamente anidadas. Tal vez haya un patrón de programación inteligente que evite la anidación profunda y sea más SECO. Además, existe el problema de las variables internas myVar1 y myVar2 que se utilizan en todas las funciones.¿Patrón de programación para aplanar callbacks ajax profundamente anidados?
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);
}
}
});
}
});
}
});
Ligeramente relacionado. Jugar AJAX "ping-pong" con el servidor es una forma segura de crear un tiempo de espera adicional. Es posible que desee considerar si es posible hacer el trabajo en una sola solicitud, incluso si eso significa transmitir más datos. – aaaaaaaaaaaa