Tengo una situación en la que mis llamadas ajax deben realizarse en un orden particular. He usado objetos jQuery diferidos en otras situaciones, pero parece que no puedo encontrar una manera de hacer que esto se comporte de manera adecuada.jQuery objeto diferido con llamadas ajax anidadas
Tengo una función que realiza un número de solicitudes ajax
en su vida. Algunas de las solicitudes se realizarán durante la devolución exitosa de otras solicitudes.
Mi pregunta es: ¿Hay alguna manera de devolver todos los objetos aplazados anidados a la llamada original $.when
?
Un ejemplo simplificado sería:
function nestedAjax() {
$.get("/", function(){
console.log("First ajax done.");
$.get("/", function(){
console.log("Second ajax done.");
});
});
};
Estoy tratando de tener la función nestedAjax
utilizar $.when()
y $.done()
así:
$.when(nestedAjax()).done(function(){
console.log("Complete");
});
Con la lectura de salida de la consola:
> First ajax done.
> Second ajax done.
> Complete.
I puede devolver el primer get
para lograrlo:
> First ajax done.
> Complete.
> Second ajax done.
Pero obviamente esto no es lo que requiero. Cualquier ayuda sería apreciada.
si tienen que ocurrir en secuencia, por qué no realizar solicitudes sincrónicos en el primer lugar? Deja de tratar de caber una clavija cuadrada en un agujero redondo. –
Tienes razón. Gracias por la llamada despertador. Logré reorganizar y lograr mi funcionalidad deseada. Todavía estoy interesado, sin embargo, si hay una forma de 'recopilar' objetos diferidos de las llamadas ajax anidadas para su evaluación, por lo que mi pregunta sigue en pie. – Aesthete
Eso es justo. :) Puede que no esté fuera de la base aquí - es muy tarde y he estado trabajando - ¿pero quizás en la función de devolución de llamada de cada llamada AJAX podría agregar el objeto a una matriz? Podría pasar la matriz a través de la cadena como argumento o dejarla en el espacio global. –