使用递归函数将树结构返回到console.log的代码,如下所示。我添加setTimeout是因为在代码处理过程中需要一些延迟,但是当我添加它时,处理顺序将以完全不同的格式输出。而且,延迟时间似乎不是恒定的。
预期值为
如果在搜索第一个类别标题之后节点中有一个子级,则通过递归搜索第二个类别标题,并再次查询children值,然后再查询第三个.. ..如果添加了setTimeout,则整个种子将首先播种,然后是第二个播种,然后是第三个播种,依此类推。
为什么会这样?
var time = 0;
function searchTree(v, t){
$(v).each(function(i,k){
setTimeout(function(){
if (t == 'clone'){
console.log(k.sCategoryTitle);
if (k.children){
searchTree(k.children,'clone');
}
}
}, time = time + 100);
});
}
答案 0 :(得分:0)
您已使功能同步。
如果有帮助,请尝试下面的代码。在这里,我删除了循环,并放置了另一个同步函数以使其同步。
var time = 100;
function searchTree(v, t){
var i=0;
function loop(){
if(i<v.length){
let k = v[i];
if (t == 'clone'){
console.log(k.sCategoryTitle);
if (k.children){
setTimeout(function(){
time = time + 100;
searchTree(k.children,'clone');
},time);
}else{
i++;
loop();
}
}else{
i++;
loop();
}
}else{
i++;
loop();
}
}
loop();
}