У меня проблема с рекурсивным получением дерева терминов из группы терминов с использованием JSOM / javascript.
Проблема в том, что я получаю все значения рекурсивно, но порядок полностью неправильный.
function recurseTerms(currentTerm, loops){
loops++;
var terms = currentTerm.get_terms();
context.load(terms);
context.executeQueryAsync(
function () {
var termsEnum = terms.getEnumerator();
while (termsEnum.moveNext()) {
var newCurrentTerm = termsEnum.get_current();
termstext += newCurrentTerm.get_name() + "<br>";
//Check if term has child terms.
if (newCurrentTerm.get_termsCount() > 0) {
recurseTerms(newCurrentTerm, loops);
}
}
document.getElementById("resultsDiv").innerHTML = termstext;
},
function () {
//failure to load terms
});
Поэтому я вызываю функцию recurseTerms с первым параметром Term-object (root) и 0 в виде циклов (только для целей форматирования). Мои условия с точки зрения инструмента управления:
Level 1
--Level 1a
--Level 1b
Level 2
Level 3
--Level 3a
----Level 3a
------Level 3a1
------Level 3a2
--------Level 3a2a
--------Level 3a2b
----Level 3b
Но, к сожалению, результат моей функции (termstext) следующий:
Level 1
Level 2
Level 3
Level 1a
Level 1b
Level 3a
Level 3b
Level 3a1
Level 3a2
Level 3a2a
Level 3a2b
Поэтому я предполагаю, что, когда функция достигает Термина «уровень 1», он обнаружит дочерние элементы и выполнит рекурсию, распечатав дочерние термины ниже «Уровня 1», но, по всей видимости, это не так.
Я знаю, в чем проблема, но я не могу найти решение :( Может ли кто-нибудь указать мне хороший способ, пожалуйста? Очень признателен!