вызов функции внутри функции settimeout не работает - PullRequest
0 голосов
/ 14 марта 2012

Чтобы дать передышку моему рекурсивному JavaScript, я пытался использовать задержку, чтобы не дать скрипту вылететь в браузере.

Вот фрагмент кода, который используется для вызова функции.

setTimeout(function () {
       recursiveGenerateTree(objNode.NodeList[cntLi], spnApplyClass, '', objEditParam)
}, 50);

Похоже, что функция не вызывается, выход для этого

Ответы [ 4 ]

1 голос
/ 19 апреля 2013

setTimeout вызывает функцию один раз после интервала, а затем не вызывает ее. я думаю, что лучше использовать setInterval . Тогда функция будет вызываться с интервалами.

Вы можете попробовать

$(document).ready( function(){
   setInterval(function () {
       recursiveGenerateTree(objNode.NodeList[cntLi], spnApplyClass, '', objEditParam)
   }, 50);
});
1 голос
/ 24 января 2013

попробуйте изменить 50 на большее значение ... значение в миллисекундах .. попробуйте использовать 1000 или 2000 вместо 50.

0 голосов
/ 14 марта 2012

Полагаю, вы должны поместить функцию вне setTimeOut

Примерно так:

function myfunction(){
  recursiveGenerateTree(objNode.NodeList[cntLi], spnApplyClass, '', objEditParam)
}

setTimeout( myfunction , 50);
0 голосов
/ 14 марта 2012

Одной из причин, по которой это может происходить, является то, что ваш objNode равен нулю, и поэтому, когда функция готовится к вызову, ее оценка останавливает его. Чтобы лучше объяснить, перед вызовом функции recursiveGenerateTree ее аргументы должны быть оценены в первую очередь. Если вышеупомянутый символ является нулевым, его членский доступ .NodeList[cntLi] не удастся.

...