Таймер против setTimeout

Из спецификации Java :

Октальная цифра состоит из цифры ASCII 0, за которой следует одна или несколько цифр ASCII от 0 до 7 и может представлять собой положительное, нулевое или отрицательное целое.

blockquote>

10
задан Christophe Herreman 21 April 2010 в 13:41
поделиться

6 ответов

setTimeout фактически использует подкласс Timer , SetIntervalTimer , который является внутренним классом. Вы можете проверить, выполнив setTimeout (function (): void {throw "booom";}, 1); . Вы увидите это в трассировке стека.

Таким образом, я не вижу большого недостатка. Единственная разница в том, что у вас 2 анонимных звонка вместо одного. OTOH, в критических ситуациях с производительностью вам не следует использовать ни один из них (кроме одного внутреннего таймера), чтобы избежать частого создания экземпляров объектов TimerEvent .

В основном, я думаю, это дело вкуса. Adobe решила, что система событий AS3 - это круто, поэтому они ее продвигают.

11
ответ дан 3 December 2019 в 20:03
поделиться

setTimeout не работает во внешних файлах .as.

-2
ответ дан 3 December 2019 в 20:03
поделиться

Таймер:

  • Предоставляет вам больше контроля, поскольку вы можете зарегистрировать больше слушателей событий, чтобы получать событие, а не {{1} } один с помощью setTimeout

  • Вы можете контролировать время начала и
    количество повторений (не очень полезно для setTimeout, так как этот
    имеет для запуска только один раз и после задержки
    , учитывая момент времени , когда он был вызван)

  • Больше строк для записи, даже больше, если вам нужно различать параметры (настраиваемый класс событий для этого)
  • Использование прослушивателей событий, что является
    стандартной практикой в ​​as3.
  • Более чистый вид

setTimeout:

  • Легче использовать

  • Меньше кода для написания

  • Параметры могут быть легко отправлены;

Я предпочитаю класс Timer, но я видел, что setTimeout часто используется программисты.

Также, если вы используете библиотеки Tweening, некоторые из них поддерживают отложенный вызов

Например, TweenMax TweenMax.delayedCall (2, myFunction, ["myParam"]);

Для всех, кто говорит, что setTimeout устарел, это бессмысленно ..

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#setTimeout%28%29

Я верю, что вы можете ' здесь нет никаких "устаревших" ключевых слов вокруг setTimeout

8
ответ дан 3 December 2019 в 20:03
поделиться

Обычно что-то устаревает, если появляется новый и более мощный способ достижения чего-либо.

Да, в некоторых случаях setTimeout намного проще настроить, но в других случаях он гораздо более ограничен.

Я бы использовал класс Timer, потому что обычно, когда что-то устарело, это означает, что поддержка для него может быть прекращена когда-нибудь в будущем, и тогда ваш код не будет работать.

0
ответ дан 3 December 2019 в 20:03
поделиться

Проблема в том, что объект Timer не совсем точен и подвержен колебаниям частоты кадров. Прочтите http://forums.adobe.com/message/892631 . Я создал свой собственный таймер (так называемый RealTimer), используя объект Date , и он намного точнее. Я рекомендую сделать то же самое.

0
ответ дан 3 December 2019 в 20:03
поделиться

Насколько я понимаю, setTimeout обесценивается в AS3. У меня небольшие проблемы с поиском источника кода setTimeout, но я также считаю, что легче очистить любые ссылки на объект Timer, чем с помощью setTimeout (если я правильно помню из AS2).

0
ответ дан 3 December 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: