Порядок исполнения после наступления события - PullRequest
1 голос
/ 22 февраля 2011
someClass = Ext.extend(someOtherClass,
   initComponent: function (){
      someFunction();
      this.on('exampleEvent', someFuntion2(), this);
   },
   someFunction: function (){
      this.fireEvent('exampleEvent');
      return null;
   }
   //...
}

Сразу после "this.fireEvent ('exampleEvent');" выполняется "return null" или "someFuntion2 ()"? Почему?

1 Ответ

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

Во-первых, второй аргумент здесь:

this.on('exampleEvent', someFuntion2(), this);

должен быть объектом Function, и вы фактически выполнили здесь функцию someFunction2 () ... так что вы, вероятно, хотели сказать:

this.on('exampleEvent', someFuntion2, this);

(Обратите внимание на отсутствующие parens () после someFunction2)

Чтобы ответить на ваш вопрос, someFunction2 будет выполняться первым из-за способа, которым Observable работает в ExtJS.Когда вы вызываете fireEvent ('exampleEvent') ... класс Observable (который должен расширяться someClass в somePoint в цепочке наследования) будет проходить по всем объектам, которые добавили прослушиватель для этого события, и вызовет переданный объект Function.в случае добавления прослушивателя - в вашем случае someFunction2 (без символов)

Конечно, при добавлении прослушивателя событий можно добавить параметры, которые приведут к выполнению вашей функции после задержки, когдасобытие происходит ...

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