|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+4 06.05.14]
|
Неудобная организация сервера. Коллбеки
Коллеги, я уж зажрался наверное, но привык работать на приятном исполнении сервера. А тут мне вот что дают :
Вызываю гетом/постом - некий скрипт сервера, получаю ответ. Это все хорошо, все понятно. В ответ только приходит JSON - в котором не указана команда которую вызвали. То есть какой бы я запрос не делал на данный сервер - я не могу знать в итоге, какой именно я запрос делал. Сейчас это общий случай private function onRequestComplete(e:Event):void { trace("Data recieved : " + this._urlLoader.data); this.dispatchEvent(new ServerEvent(ServerEvent.DATA_RECIEVED , this._urlLoader.data)); } Кто нить работал с такми ПРОГРЕССИВНЫМ!!!! апи... и как выходили из ситуации в рамках ООП, а не костылях
__________________
Марк Tween |
|
|||||
Класс - операция
Создаете объект этого класса, вызываете метод с параметрами. Он внутри нужно запоминает, сам делает запрос, и сам обрабатывает ответ и выдает вам, в каком угодно виде. Типа (new Oper(url, params, 'user_info', callback)).run(); (new Oper(url2, params2, 'user_friends', callback)).run(); Также можно вообще урл зашить в операцию и делать предобработку ответа в классе, приводить джсон к списку друзей или юзеринфе и в коллбек выкидывать готовый для работы объект(ы).
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
[+4 06.05.14]
|
GBee - вот такой вот подход обычно и является другом девочки *утечки памяти*. Я естественно понимаю, как это сделать. Тут именно вопрос как сделать красиво, не пересоздавая каждый раз классы
__________________
Марк Tween |
|
|||||
Вам шашечки или ехать? Это просто обертка над лоадером, вы же все равно новый лоадер создаете.
Можно забацать маппинг тип=запрос+параметры (в хмл или хардкодом или как угодно) и автоматизируете все это, чтобы само все там что-то делало. У вас же все равно где-то есть вызов. Непонятно, у вас урлы что ли не отличаются никак? Тыкаетесь в один, а он разные ответы шлет?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Т.е вам не пришел комплит от старого запроса, а вы уже новый реквестите. Прикольно.
|
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Только в том если последовательность ответов имеет значение.
|
|
|||||
Я с Пчолом согласен.
Тут "команда" спасет. Один запрос - одна команда. (Либо нечто похожее на RPC.) Ты ее вызвал - она сама отработала, сама результат получила, сама разобралась что с ответом делать. Чтобы не было утечек нужно предусмотреть какой-то CommandController. В котором будет храниться список текущих активных команд. Плюс например сама команда будет в это контроллер диспатчить "комплит" по завершению обработки ответа, а контроллер ее грамотно дестроить. Хотя я бы по голове серверщикам настучал лучше, ибо все мои привычные подходы подразумевают асинхронный подход к общению с сервером. Но если бы "був час та натхнення" - то заморочился бы так как описал.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
я просто делаю массив (колбэков или типов событий для диспатча) и массив реквестов, пушу все в массив , и начинаю загрузку, с нулевого элемента, когда приходит ответ, делаю то что надо с ответом и колбек функцией, и делаю шифт массивов, и перевызываю функцию загрузки.
Последний раз редактировалось Isfet; 10.01.2014 в 11:22. |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Другими словами, ты создаешь очередь и сдвигаешь ее по мере прихода комплита, посылая очередной реквест от следующего элемента в очереди. Если, так, то правильно. Только непонятно, что такое "пушить асинхронно".
|
Часовой пояс GMT +4, время: 20:51. |
|
« Предыдущая тема | Следующая тема » |
|
|