我有一个问题,就是使用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
所以我假设当函数达到Term&#39; level 1&#39;时,他会通过在子级1&#39;下面打印子项来检测孩子并递归。但事实并非如此。
我知道问题是什么,但我不知道解决方案:( 请问有人指出我的好方法吗? 非常感谢!
答案 0 :(得分:0)
好的,我很久以前使用javascript promises修复了这个问题。当检索到级别1时,我们可以调用函数等...