Есть ли в JS "идиома" или шаблон, который позволит мне приостановить выполнение во время анимации? - PullRequest
1 голос
/ 11 февраля 2011

У меня в основном есть этот код:

for (var i = 0; i < num; i++) {
  ShowCard(i);
}

Прямо сейчас, ShowCard просто добавляет элемент DOM, но я хочу, чтобы он имел анимацию, которая покажет эту карту, летящую откуда-то еще) в конечный пункт назначения, и я хочу, чтобы вторая карта подождала, пока первая не закончит полет, прежде чем она начнется.

Есть ли способ достичь этого, не переписывая весь мой код в стиле "прохождения продолжения"?

Я предполагаю, что ответ - нет, и мне придется прикусить пулю и сделать это, но подумал, что я спрошу.

Спасибо!
Даниэль

Ответы [ 4 ]

3 голосов
/ 11 февраля 2011

Ответ - нет.

Единственными API блокировки в JavaScript являются встроенные - alert, confirm и prompt.

2 голосов
/ 11 февраля 2011

Вы можете попробовать новый deferred API jQuery .

1 голос
/ 11 февраля 2011

Вы можете ввести глобальную переменную блокировки inMotion, которая указывает, что вторая карта не может двигаться.Затем в коде, который вызывает перемещение второй карты, вы можете проверить это логическое значение, и, если не пришло время двигаться, используйте setTimeout или setInterval, чтобы непрерывно вызывать ваш метод, пока не пришло время его перемещать.

0 голосов
/ 11 февраля 2011

Злой взлом: Вместо того, чтобы заставить ваши анимации работать, используя setTimeout и друзей (функции, которые передают поток управления), заставьте их работать глупо, используя циклы while, стиль блокировки спин. В псевдокоде:

next_time = curr_time + delta;
while(get_time() < next_time){} //Do nothing
...