Mam sytuację, w której moje wywołania ajax muszą działać w określonej kolejności. Używałem obiektów odroczonych jQuery w innych sytuacjach, ale nie mogę znaleźć sposobu, aby to odpowiednio się zachowywało.jQuery odroczony obiekt z zagnieżdżonymi wywołaniami ajax
Mam funkcję, która wykonuje wiele żądań ajax
w swoim życiu. Niektóre żądania będą wykonywane podczas oddzwaniania powodzenia innych żądań.
Moje pytanie: Czy istnieje sposób, aby zwrócić wszystkie zagnieżdżone odroczone obiekty do oryginalnego połączenia $.when
?
Uproszczony Przykładem może być:
function nestedAjax() {
$.get("/", function(){
console.log("First ajax done.");
$.get("/", function(){
console.log("Second ajax done.");
});
});
};
staram się mieć funkcję nestedAjax
do korzystania $.when()
i $.done()
tak:
$.when(nestedAjax()).done(function(){
console.log("Complete");
});
z odczytem wyjścia konsoli:
> First ajax done.
> Second ajax done.
> Complete.
I może wrócić pierwszy get
do osiągnięcia tego celu:
> First ajax done.
> Complete.
> Second ajax done.
Ale oczywiście nie jest to, czego potrzebują. Każda pomoc będzie doceniona.
jeśli muszą występować w kolejności, dlaczego nie wykonywać synchronicznych żądań w pierwszej kolejności? Przestań próbować dopasować kwadratowy kołek w okrągłym otworze. –
Masz rację. Dzięki za wywołanie budzika. Udało mi się zmienić i osiągnąć pożądaną funkcjonalność. Wciąż jednak jestem zainteresowany, jeśli istnieje sposób na "zbieranie" odroczonych obiektów z zagnieżdżonych wywołań ajaxowych do oceny, więc moje pytanie wciąż jest aktualne. – Aesthete
To jest w porządku. :) Mogę nie być tutaj poza bazą - jest bardzo późno i pracowałem - ale może w funkcji wywołania zwrotnego każdego wywołania AJAX mógłbyś dodać obiekt do tablicy? Możesz przekazać tablicę przez łańcuch jako argument lub pozostawić go w przestrzeni globalnej. –