Главная страница
    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
4-1249279630
DevilDevil
2009-08-03 10:07
2011.07.24
Выделен текст в ComboBox


15-1299782099
NailMan
2011-03-10 21:34
2011.07.24
Понюшка Неба


2-1302299560
TheEd
2011-04-09 01:52
2011.07.24
Ламерский вопрос про обновление списка lookup-поля


2-1302880220
loki3d
2011-04-15 19:10
2011.07.24
передача большого файла через Socket


15-1302120074
Игорь Шевченко
2011-04-07 00:01
2011.07.24
McSimm, с днем рождения!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский