Re[2]: Событийно ориентированное программирование
От: _NN_  
Дата: 19.07.14 07:16
Оценка:
Здравствуйте, KARPOLAN, Вы писали:


_NN>>Тут ведь получается, что нужно хранить этот 'MyHandler' только для того, чтобы отписаться от события.

_NN>>Т.е. его нельзя сделать анонимной функцией, локальной переменной и т.д.

KAR>Не нужно ничего хранить, это глобальная константа. На ивент же может быть больше одного листенера...

Как не нужно ?
Вот в этом примере как отписаться ?
  window.addEventListener('click', function() {} );



Вот классическая ошибка первого варианта в JavaScript:

function f() {
  var handler = function() {    
  }

  // Удалить старое если было
  window.removeEventListener('click', f);
  // Добавить новое
  window.addEventListener('click', f);
}

Тут каждый вызов функции создается другая переменная и в итоге ничего не удаляется.

Второй вариант также позволяет иметь более одного подписчика.
myEvent.Subscribe(f1);
myEvent.Subscribe(f2);
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.