Рекурсия с таймаутом
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Рекурсия с таймаутом Expand / Collapse
Автор
Сообщение
06.11.2006 12:32
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum 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"
Сообщ. #906970
06.11.2006 17:00
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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();

----------------------------------
Я безработный...
Возьмите меня на работу. =)

Сообщ. #906984
06.11.2006 17:48
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
это все понятно, но не совсем то. ведь целью рекурсии является получение конечного результата, а в твоем примере получаем промежуточный результат на каждом шаге итерации.
Сообщ. #906991
06.11.2006 17:56
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
надо поменять местами return true и return false
Сообщ. #906992
06.11.2006 18:08
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
nighthunter из твоего примера непонятно, что ты пытаешься получить в итоге. Рекурсии в твоем примере нет.
Сообщ. #906995
06.11.2006 18:32
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
да я все о том-же)
если после динамического подключения скрипта (описано в предыдущих топиках) сразу использовать перменные, которые в нем, то ничего не работает (тип переменных - undefined), потому как надо дать загрузатся скрипту.

первый выход - поставить таймаут и после него использовать переменные - это не лучший способ потому как за данный таймаут скрипт может не успеть загрузиться.

второй способ - создать рекурсию, которая и будет контролировать загрузку скрипта посредством анализа typeof
Сообщ. #906998
06.11.2006 19:19
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Можно поступить по другому, пусть загружаемый скрипт сам извещает что он загрузился путем вызова заранее известной функции.
Сообщ. #907003
06.11.2006 19:32
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 24.01.2008 14:59
Сообщ.: 68, Visits: 545
как в JsHttpRequest? тоже неплохой вариант) наверно так и сделаю.
Сообщ. #907005
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 8:38