Форум: "Прочее";
Текущий архив: 2011.07.24;
Скачать: [xml.tar.bz2];
Внизвопрос по ActionScript3 Найти похожие ветки
← →
KilkennyCat © (2011-04-08 14:34) [0]что-то не могу зарегится на флэшовом форуме, спрошу здесь, извиняйте.
в одном пакете есть вызов функции из другого пакета, куда в качестве кэллбэка передается функция первого пакета.
вызванная функция во втором пакете использует стандартную функцию лоадер, со своей функцией кэллбэка, и вот из нее уже нужно осуществить первый кэллбэк.
как?
учитывая, что еще кэллбэк может отработать не сразу, а вызовов самой первой функции пройти несколько.
создавать вложенную функци с каким-то массивом кэллбэков?
← →
Компромисс (2011-04-08 15:50) [1]1. Вопрос непонятен
2. Можно сохранить callback в переменной типа Function и использовать ее, когда надо
← →
Компромисс (2011-04-08 15:51) [2]3. Я в аналогичной ситуации запоминаю в массиве уже отправленные запросы и при получении ответа проверяю, не был ли запрос отмененен, пока он обрабатывался
← →
KilkennyCat © (2011-04-08 16:03) [3]
> Компромисс (08.04.11 15:50) [1]
именно 2. я использовал. но боюсь :)
> 1. Вопрос непонятен
Поясню:
переделываю чужой код флэши. в нем множество POST запросов к серверу. Решил вынести в один пакет, объединить.
итак, в главном пакете:
US.loadUser(parametrs, onCallback);
....
function onCallback(data):void{
...
}
US.loadUser() начинает крутится во втором пакете
public function loadUser(parametrs, onCompl:Function = null):void{
loader=new URLLoader();
loader.addEventListener(Event.COMPLETE, getReply);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(request);
}
private function getReply(e:Event){
и вот отсюда я хочу все вернуть в первый пакет, в указанный onCallback
}
в loader.addEventListener я не могу нмчего передать, поэтому я поступил по совету 2. и создал переменную. Все работает.
но возникает вопрос: что будет, если я вызову
US.loadUser(parametrs, onCallback1);
US.loadUser(parametrs, onCallback2);
?
ведь даже если я разнесу кэллбэки тут, во втором пакете getReply - одна и та же.
Создавать массив?
← →
KilkennyCat © (2011-04-08 16:05) [4]
> Компромисс (08.04.11 15:51) [2]
значит, все-таки массив... я просто надеялся, что может есть какая-та фишка, о которой я не знаю, типа какой-нить стека-очереди..
← →
Компромисс (2011-04-08 16:12) [5]но возникает вопрос: что будет, если я вызову
US.loadUser(parametrs, onCallback1);
US.loadUser(parametrs, onCallback2);
?
loadUser может быть методом класса, соответственно каждый user должен загружаться отдельным объектов.
var loader:UserLoader = new UserLoader();
loader.loadUser(parametrs, onCallback1);
loader = new UserLoader();
loader.loadUser(parametrs, onCallback2);
Или возможно нужно загружать только последнего. Тогда можно использовать один объект и при получении результата проверять, что он последний:
if(resultEvent.data.user == this.lastRequestedUser){
// execute callback
}
← →
Компромисс (2011-04-08 16:14) [6]значит, все-таки массив... я просто надеялся, что может есть какая-та фишка, о которой я не знаю, типа какой-нить стека-очереди..
Некоторые запросы поддерживают отмену запроса или поссылку последнего с игнорированием предыдущих, но это уже на контекст смотреть надо.
← →
KilkennyCat © (2011-04-08 16:27) [7]Понятно. Огромное спасибо!
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.07.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c