http://jsfiddle.net/jmztZ/[JavaScript, Jquery] Как ждать анимации, чтобы закончить полностью, прежде чем продолжить другую анимацию без обратных вызовов
Выше ссылка на мою проблему. Скажем, что у меня есть только 1 div, содержимое которых может измениться через .html(). Я хотел бы использовать div для изменения его содержимого и отображения самого себя с помощью анимации() или show() и т. Д. Однако, когда есть 2 функции, которые управляют div, скорость браузера слишком быстрая, что, кажется, пропускает первый .html ().
Вопрос: Как я могу дождаться, пока первая функция (ака «go()» в скрипке) полностью выполнится (что включает изменение содержимого .html() и всей анимации) перед тем, как запустить вторую функцию (иначе «).
Попытки:
Примечание: Даже если эти попытки мои, кажется, выполнить анимацию, соответственно, на очереди, функция HTML() никогда не может ждать. Взгляните на скрипку снова. Кроме того, я попытался найти несколько методов в Stackoverflow, и все они совпадают.
Я попытался с помощью:
//Regular way, obviously didn't work
go(); went();
И использование Отложено:
$.Deferred().done(go, went).resolve();
А также самостоятельно вызываемая функция:
var f = [go, went]; c = 0;
(function selfCall(){
if (c >= f.length) return;
f[c].call(); c++;
selfCall();
})();
Но никто из них не похоже на работу должным образом.
Итак, чтобы завершить работу, у меня будет массив, который может использовать .push() для запуска любого количества функций для выполнения, все функции связаны с управлением содержимым div и его анимацией. Я хотел бы знать, как правильно выполнять все функции из этого массива один за другим, а следующий должен ждать окончания текущего.
Вы не можете сделать это без обратных вызовов. Так все работает. – Pointy
@Pointy: Так есть ли способ обойти мою проблему? Как, в любом случае, чтобы вывести этот массив функций в обратные вызовы и заставить его работать? Я пробовал $ .Callbacks(), но это казалось неправильным. – cuzmAZN
Есть способы сделать это, но он всегда включает в себя управление обратными вызовами. У вас может быть одна функция обратного вызова, которая выгружает элементы «рабочего списка» из массива (что в основном является тем, что делает jQuery для очереди анимации). – Pointy