使用超时调用函数(params)时递归过多

viy*_*ncs 4 javascript ajax dom

我在递归函数时遇到问题.我在firebug中得到错误

太多的递归

这是我的javascript代码:

var contentPc = "list";
waitForBody(contentPc);
function waitForBody(id){
    var ele = document.getElementById(id);
    if(!ele){
        window.setTimeout(waitForBody(contentPc), 100);
    }
    else{
        //something function
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?感谢您的回答.

mu *_*ort 9

据推测,您id="list"的DOM中没有元素.这意味着您的初始waitForBody通话将在此处结束:

window.setTimeout(waitForBody(contentPc), 100);
Run Code Online (Sandbox Code Playgroud)

这将waitForBody(contentPc)在构建参数列表时调用setTimeout.然后你又回到了setTimeout呼叫状态,但又有一个堆栈级别.我想你的意思是这样说:

window.setTimeout(function() { waitForBody(contentPc) }, 100);
Run Code Online (Sandbox Code Playgroud)

这样下次waitForBody通话就会延迟一点.