|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
пытаюсь сделать рекурсию с таймаутом
function rec(){
if (a == 'undefined'){
setTimeout(rec(),1000)
}
else{
return 1;
}
}
использование
if (rec()){
alert("TEST")
}
но скрипт вылетает сразу после загрузки с "too much recursion"
|
|
|
|
|
Supreme Being
      
участник
Last Login: 29.05.2008 20:04
Сообщ.: 269,
Visits: 2 381
|
|
nighthunter (06.11.2006) пытаюсь сделать рекурсию с таймаутом
function rec(){
if (a == 'undefined'){ setTimeout(rec(),1000) } else{ return false; }
}
использование
if (rec()){ alert("TEST") }
но скрипт вылетает сразу после загрузки с "too much recursion"Ну для начала ты неправельно вообще написал скрипт =) var a=1; function rec(){ if (a==1){ setTimeout("rec()",1000); return true; } else{ return false; } } if (rec()){ alert("TEST") } Во вторых о какой рекурсии речь? =) Хочешь рекурсию, тогда напиши: var a=1; function rec(){ if (a==1){ setTimeout("rec()",1000); alert("Рекурсия =)") return true; } else{ return false; } } if (rec()){ alert("TEST") } А почему в твоем примере ты не видишь рекурсию, ибо функция проверки rec() выполняеться один раз и при её выполнени ты эту функцию просто ставишь на бесконечный цикл. При условии твоя проверка выполняеться один раз =) если уже хотул сделать провеку, то: var a=1; function rec(){ if (a==1){ setTimeout("rec()",1000); return true; } else{ return false; } } if (rec()){ alert("TEST") } var a=1; function rec(){ if (a==1){ setTimeout("A()",1000); return true; } else{ return false; } } function A() { if (rec()){ alert("TEST") } } A();
----------------------------------
Я безработный...
Возьмите меня на работу. =)
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
| это все понятно, но не совсем то. ведь целью рекурсии является получение конечного результата, а в твоем примере получаем промежуточный результат на каждом шаге итерации.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
| надо поменять местами return true и return false
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| nighthunter из твоего примера непонятно, что ты пытаешься получить в итоге. Рекурсии в твоем примере нет.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
да я все о том-же)
если после динамического подключения скрипта (описано в предыдущих топиках) сразу использовать перменные, которые в нем, то ничего не работает (тип переменных - undefined), потому как надо дать загрузатся скрипту.
первый выход - поставить таймаут и после него использовать переменные - это не лучший способ потому как за данный таймаут скрипт может не успеть загрузиться.
второй способ - создать рекурсию, которая и будет контролировать загрузку скрипта посредством анализа typeof
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Можно поступить по другому, пусть загружаемый скрипт сам извещает что он загрузился путем вызова заранее известной функции.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
| как в JsHttpRequest? тоже неплохой вариант) наверно так и сделаю.
|
|
|
|