Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1303316751
Лариса
2011-04-20 20:25
2011.07.24
Много вопросов по StringGrid


2-1303294957
jacksotnik
2011-04-20 14:22
2011.07.24
помогите с задачкой


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


1-1260966363
Andrews
2009-12-16 15:26
2011.07.24
Компонент для окна с настройками программы


15-1302498254
pavlodar
2011-04-11 09:04
2011.07.24
swf 2 exe со своим флеш плеером





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский