|
|
|||||
Когда Callback лучше чем Event
Рискую начать очередной холивар, но все таки напишу...
Почитал старую темку про Callback vs Event, и задумался(вчера тоже эта темя затрагивалась). А действительно, в каких ситуациях callback лучше чем событие, по крайней мере для меня? Думал, думал, почему в одних случаях я делаю то или другое, и понял... Callback лучше в тех случаях, когда он должен вызваться один и только один раз, и после этого может быть очищен без ведома пользователя. Пример: Соответственно код, который вызывает этот callback: В такой ситуации event был бы куда менее удобен. Аналогичным примером являются всевозможные твинеры. А как считаете вы?
__________________
Искренне Ваш, Джек. Последний раз редактировалось JackFromChaos; 22.01.2011 в 14:35. |
|
|||||
Modus ponens
|
Был такой дядька, очень любил бриться, Оккамом звали. Так вот, следуя из того, что он говорил, если событие не нужно, то оно не нужно
__________________
Hell is the possibility of sanity |
|
|||||
Тоже верно, согласен
__________________
Искренне Ваш, Джек. |
|
|||||
Вместо
лучше использовать В общем случае это чтобы не боятся, что код внутри _complete(result) может изменить значение переменной _complete |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Гипотетически предположим, что это самое поле _complete как то доступно скоупу передаваемого метода, что в реальной жизни из разряда фантастики.
Изменили, ага. И что?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Гипотетически это может быть не разовое действие, а перезапускаемое, и передаваемый метод как раз может при некоторых условиях перезапускать эту активность. А мы _complete занулим, и наша активность уперётся в путое место при окончании.
Знаю, что это всё "если бы да ка бы", но это не из разряда фантастики и в реальной жизни я такое встречал. Добавлено через 9 минут Даже в данном примере, это может быть попытка залогиниться повторно. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Изменили. Теперь _complete = null. И что, присваивая fun = _complete = null в нём чудом появится ссылка на начальный метод _complete?
Цитата:
Внимание, вопрос: на кой передавать метод того же класса в коллбек, если можно его сразу же дёрнуть?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Не понял Вашу мысль, или скорее не смог понятно выразить свою.
Попробую ещё раз private var _login_pairs:Array = [{"usr":"user1", "pwd":"12"}, {"usr":"user1", "pwd":"13"}]; private function tryLogin():void { if (_login_pairs.length > 0) { var pair:Object = _login_pairs.shift(); _connection.login(pair.usr, pair.pwd, onLogin); } } private function onLogin(result:Object):void { if (result.success) { continueProgram(); } else { tryLogin(); } } если мы выполним _complete, который запустит повторную попытку логина, а потом обнулим _complete, то повторная попытка ничем не закончится. |
|
|||||
Меня тоже интересует основной вопрос топикстартера, сам событиями пользоваться не очень люблю. Хотелось бы услышать мнение как профи, так и "профи".
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Где реально можно ошибиться, занулив коллбек случайно?
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 20:44. |
|
« Предыдущая тема | Следующая тема » |
|
|