![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Ситуация глупая, но разобраться в ней не могу уже второй день...
Давным давно Я написал плагин анимации в jQuery. Тогда я ещё мало чего знал в JS, делал по аналогии. Сейчас возникла ситуация, что плагин надо было переписать. Встретил в коде строку: Код:
Если строку setTimeout заменить прямым вызовом, то где-то действительно происходит замыкание. Где понять не могу - код достаточно сложен. Вот и возник вопрос, как при помощи setTimeout можно вылечить замыкание? Перефразирую: как избежать замыкания без setTimeout? Последний раз редактировалось Виталий Желтяков; 25.01.2012 в 20:20. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
![]()
предположу что время выполнения в 1 милисек недостаточно для выполния скрипта.
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Тут ситуация в том, что setTimeout не позволяет возникнуть замыканию. При его использовании всё нормально. Но почему?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
![]()
Начну с того, что первый раз об этом слышу. Могу только строить предположения: за 1мс успевает выполниться основная функция, поэтому скоп уничтожается.
Тишина – самый громкий звук
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]() Цитата:
Но тогда как этого избежать. |
|
![]() |
![]() |
![]() |
#6 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
![]()
таймаут запускает функцию параллельно основной. Как поступить без таймаута что-то в голову не приходит=)
Alar, верни репу!
|
![]() |
![]() |
![]() |
#7 | ||
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
![]() Цитата:
Цитата:
Тишина – самый громкий звук
|
||
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Всё разобрался.
У меня было, что setTimeout откладывал выполнение функции до тех пор пока она не закончиться. В функции было зацикленное замыкание, которое к тому же создавало утечку. При вызове напрямую это зацикливание становилось явным. В итоге пришлось разбираться с зацикливанием замыкания. А там у меня ещё один setTimeout с рекурсивной функцией.... Лучше бы с нуля по новой написал. Цитата:
Тему можно закрывать. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замыкания | Viconte | JavaScript, Ajax | 1 | 07.11.2010 21:08 |
setTimeout | bulldog5293 | Работа с сетью в Delphi | 1 | 22.07.2010 14:31 |
SetInterval и SetTimeOut | Syltan | JavaScript, Ajax | 1 | 10.05.2010 22:42 |
setTimeout отказывается работать | Deight | JavaScript, Ajax | 17 | 29.01.2009 20:29 |