Proszę wybaczyć mi, że powtarzam już bardzo zadane pytanie, ale wszystko, co do tej pory widziałem, nie wydaje mi się rekurencyjne ani nie odwzorowuje na to, co robimy, i temat obietnic i odroczeń wydaje mi się bardzo złożony.Jak poprawnie zakodować rekursywną obietnicę jquery
Mam "drzewo tematów", które jest budowane asynchronicznie, gdy użytkownik rozwija węzły. Ten temat jest zbudowany przy użyciu punktu końcowego API, który zwraca elementy podrzędne węzła po kliknięciu przycisku (+) w węźle drzewa tematów.
Gdy użytkownik kliknie przycisk staram się rekurencyjnie załadować elementy temat drzew metodą, która wygląda tak:
function getAssociatedTopics(){
$.get('/topics/curriculum-associations', {guids: [...]})
.then(function(data){
//Process the topic information here
var topicId = /* some processing */;
//Get ancestors of each topic returned
$.get('/topics/getAncestors', {of: topicId})
.then(function(data){
//Process the topic information here
var topicId = /* some processing */;
//Get ancestors of each topic returned
//Rinse repeat as long as we find children of each topic found
});
}).then(function(){
//Expand the nodes
//Select the nodes
});
}
Więc to powinno wyglądać, ale mam wszystko stracone czytanie dokumentacja, aby upewnić się, że moje rzeczy są wykonywane we właściwej kolejności ... Wielkim problemem, jaki mamy teraz z tą strukturą, jest to, że wszystkie moje węzły ładują się w równoczesny sposób, a następnie usuwają wybrane węzły, otwierają i zamykają węzły w dowolnym momencie i wybór kończy się bardzo niechlujnie.
Nie chcę dogłębnie wyjaśnić obietnic, ani nie chcę pełnego rozwiązania, ale ogólny pomysł, jak to osiągnąć.
Chcesz rozwinąć poddrzewo węzła? A może tylko pierwsze dzieci? – MinusFour
Mówisz "kiedy użytkownik kliknie przycisk", czy ten przycisk to przycisk '(+)' w węźle drzewa tematów, czy jakiś inny przycisk? Ponieważ * mówisz * masz "punkt końcowy API, który zwraca węzły węzła", ale nie pokazałeś niczego, co wyraźnie to jeszcze robi (chyba, że to robi '/ topics/curriculum-association'). –
Ponadto, kod mówi * Uzyskaj przodków każdego zwróconego tematu *, co prowadzi mnie do przekonania, że istnieje pętla, której nie widzimy. Pętla, która może bardzo dobrze określić poprawność odpowiedzi ... –