因为递归太深而使用了异步的 setTimeout 清空调用栈,整个递归变成了异步的行为,怎么设置完成后的回调?
简单的代码示例:
var stackSize = 0;
function foo(a){
stackSize ++;
bar();
if (!a.length) return;
if (stackSize > 1000) {
stackSize = 0;
setTimeout(function(){
a.forEach(foo);
},0);
} else {
a.forEach(foo);
}
}
foo(hugeArray); //hugeArray 是一个多层嵌套的数组, 像这样 [[[...],[...]],[...]]
简单的代码示例:
var stackSize = 0;
function foo(a){
stackSize ++;
bar();
if (!a.length) return;
if (stackSize > 1000) {
stackSize = 0;
setTimeout(function(){
a.forEach(foo);
},0);
} else {
a.forEach(foo);
}
}
foo(hugeArray); //hugeArray 是一个多层嵌套的数组, 像这样 [[[...],[...]],[...]]