Показать сообщение отдельно
  #5 (permalink)  
Старый 02.01.2011, 23:57
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Сообщение от B@rmaley.e><e Посмотреть сообщение
Возьмите и посмотрите. Код jQuery открыт (hint: jQuery.fx.prototype.step, функция будет лежать в this.options.complete).
Рекурсия здесь даже если и есть, то по всей логике она должна быть хвостовой. Не говоря уже о том, что callback будет вызван в другой момент времени (setTimeout / setInterval постарается), когда функция, начавшая анимацию, будет уже давным-давно выполнена.
Насколько я понял, весь jQuery работает на основе очереди, и для каждого обрабатываемого селектора создается очередь. В очередь помещаются "команды", что нужно делать в данный момент времени и информация, на каком этапе находится выполнение "команды". Как только "команда" выполнена, она удаляется из очереди, и начинается выполнение следущей "команды".

Получается, что если вызов "конечной" функции идет с помощью обработчика очереди, то рекурсии быть не должно. То есть, просто при вызове animation() с конечной функцией, в очередь помещается "команда" движения объекта, а после нее "команда" вызова конечной функции, и код выполняется дальше. В параллель начинает движение объект, а при завершении движения вызовется конечная функция (возможно не сразу, а при очередном вызове jQuery.ready, который является Main Loop для всего jQuery).

Правильно ли я понял, что рекурсии не будет?
Ответить с цитированием