Должен ли DispatchEvent быть последним оператором функции? - PullRequest
1 голос
/ 25 ноября 2011

Должно ли dispatchEvent быть последним оператором какой-либо функции?

Ответы [ 3 ]

3 голосов
/ 25 ноября 2011

Когда вы вызываете dispatchEvent, все обработчики для этого события немедленно вызываются до того, как запустится остальная часть тела функции, где был вызван dispatchEvent.Означает ли это, что вам нужно вызывать dispatchEvent как последнюю вещь в теле функции?Только если код после вызова dispatchEvent как-то зависит от чего-то, что будет неблагоприятно изменено при запуске обработчиков.

1 голос
/ 25 ноября 2011

Нет

dispatchEvent вызовет событие, и соответствующий обработчик события будет выполнен сразу после вызова dispatchEvent.

Однако, в отличие от возврата, остальные строкикода будет выполнено после обработчик событий полностью выполнен

Простой тест:

//Movie clip (mClip1)

function buzz():void {
    trace("buzz:1");
    dispatchEvent(new Event("justAnotherEvent"));
    trace("buzz:2");
}


//on the stage,

mClip1.addEventListener("justAnotherEvent", ping);

function ping(e:Event):void {
    trace("ping");
}

Вывод:

buzz: 1
ping
buzz: 2

edit Я ЗНАЮ, что использование литеральной строки вместо const для типа событияплохая практика, но, как я уже сказал, это всего лишь простой быстрый и грязный тест.

1 голос
/ 25 ноября 2011

Абсолютно не - dispatchEvent () может быть вызван в любом месте, как вы пожелаете. Что заставляет вас задавать этот вопрос?

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