Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.24;
Скачать: CL | DM;

Вниз

вопрос по 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
2-1302880220
loki3d
2011-04-15 19:10
2011.07.24
передача большого файла через Socket


2-1302979988
Aleks1995
2011-04-16 22:53
2011.07.24
Трудности с QuickReport


2-1303316751
Лариса
2011-04-20 20:25
2011.07.24
Много вопросов по StringGrid


4-1249032759
Armature_Current
2009-07-31 13:32
2011.07.24
Синхронизация потоков


15-1302033916
Кто б сомневался
2011-04-06 00:05
2011.07.24
Post метод и комбобокс (js?)