Показать сообщение отдельно
  #6 (permalink)  
Старый 07.05.2012, 19:32
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

aphextwin я не очень понял что вам конкретно непонятно.

f=function(){
     //полезный код
     setTimeout(f, 20);
}
f();//первый вызов.

алгоритм примерно такой
1) вы вызываете функцию f
2) начинается исполнение функции
2) в функции f есть функция setTimeout которой передаётся два параметра, 1 - это функция, 2 - это время по истечению которого нужно вызвать функцию в первом параметре
3) завершается исполнение функции.
4) проходит 20 мс, и теперь уже не вы а таймер вызывает функцию переданную в первом параметры, а дальше смотрите шаг два (только не повисните )


setTimeout вызывает указанную функцию только один раз по истечению указанного временного промежутка.

так как вызванной функции находится setTimeout, функция будет постоянно заставлять таймер вызывать саму себя

Всё что вам нужно для запуска это просто вызвать функцию f первый раз.

так как следующий отсроченный таймером запуск следующий функции происходит только после обработки
предыдущей, то и не происходит накопления событий.

что касается arguments.callee, нужно же как то указать setTimeout какую функцию вызывать через 20мс.
думаю уместно говорить о трёх способах.
f=function c (){
   setTimeout(f,20);                          // первый способ
   setTimeout(c,20);                         // второй способ
   setTimeout(arguments.callee,20);    // третий способ
}
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 07.05.2012 в 20:04.
Ответить с цитированием