Насколько асинхронным является jquery и анимация? - PullRequest
1 голос
/ 28 декабря 2010

Я получаю некоторые непредсказуемые неудачи с моим сценарием, и я начинаю думать, что он может иметь какое-то отношение к используемой мной анимации.

У меня есть один элемент с прикрепленным событием click (), который запускает анимацию. Что-то вроде

$(el).click(function() {
  $(this).animate({some properies}, 500);
});

Допустим, мы немного расширим это

$(el).click(function() {
  $(this).stop(true, true);
  fancyFunction(this);
  $(this).animate({some properies}, 500);
});

Теперь я добавил вызов fancyFunction, и важно то, что я прекращаю текущую анимацию объекта (например, если дважды щелкнуть мышью). Также для записи fancyFunction () ДОЛЖЕН быть уверен, что на элементе не запущена анимация.

Я думаю, что это может быть моей проблемой. Можете ли вы быть уверены, что stop () завершена до вызова следующей строки, в этом случае fancyFunction (), или fancyFunction сработает сразу после запуска stop (), но не обязательно завершится? Если это ведет себя как другие функции в категориях анимации, я думаю, нет.

Если это может быть проблемой, какие решения у вас есть?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

.stop() является синхронным, без таймаутов и т. Д. ... завершится до следующего оператора.Я думаю, что ваша проблема, скорее всего, кроется в другом месте, поскольку то, что у вас есть , уничтожит все анимации на этом элементе.

0 голосов
/ 28 декабря 2010

Javascript является однопоточным, поэтому нет другого способа выполнения кода во время выполнения вашего Javascript. Даже если анимация все еще выполняется, тот факт, что ваш код выполняется в этот момент, означает, что анимация не может фактически изменять объект во время выполнения вашего кода. Но, да, ваш остановочный вызов остановит запуск анимации, и при запуске fancyFunction ничего не происходит.

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

...