слишком много рекурсии при вызове функции (params) с таймаутом - PullRequest
4 голосов
/ 23 ноября 2011

У меня проблема, когда функция рекурсии. Я получаю ошибку в 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
    }
}

как я могу это исправить?спасибо за ваш ответ.

1 Ответ

9 голосов
/ 23 ноября 2011

Предположительно, у вас нет элемента id="list" в вашей DOM.Это будет означать, что ваш начальный вызов waitForBody будет завершен здесь:

window.setTimeout(waitForBody(contentPc), 100);

, и это вызовет waitForBody(contentPc) при построении списка аргументов для setTimeoutИ затем вы снова возвращаетесь к вызову setTimeout, но еще на один уровень стека.Я думаю, что вы хотите сказать это:

window.setTimeout(function() { waitForBody(contentPc) }, 100);

, чтобы следующий waitForBody звонок немного задержался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...