SharePoint JSOM 获取分类法递归

SharePoint JSOM get taxonomy recursive

我在使用 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

所以我假设当函数到达 'level 1' 项时,他会通过在 'Level 1' 下打印子项来检测子项并递归,但显然情况并非如此。

我知道问题出在哪里,但我不知道解决方案:( 谁能指出我的好方法吗? 非常感谢!

好的,我很久以前就使用 javascript promises 解决了这个问题。当检索到级别 1 时,我们可以调用函数等...