![]() |
Неудобная организация сервера. Коллбеки
Коллеги, я уж зажрался наверное, но привык работать на приятном исполнении сервера. А тут мне вот что дают :
Вызываю гетом/постом - некий скрипт сервера, получаю ответ. Это все хорошо, все понятно. В ответ только приходит JSON - в котором не указана команда которую вызвали. То есть какой бы я запрос не делал на данный сервер - я не могу знать в итоге, какой именно я запрос делал. Сейчас это общий случай Код AS3:
Кто нить работал с такми ПРОГРЕССИВНЫМ!!!! апи... и как выходили из ситуации в рамках ООП, а не костылях |
Класс - операция
Создаете объект этого класса, вызываете метод с параметрами. Он внутри нужно запоминает, сам делает запрос, и сам обрабатывает ответ и выдает вам, в каком угодно виде. Типа Код AS3:
Также можно вообще урл зашить в операцию и делать предобработку ответа в классе, приводить джсон к списку друзей или юзеринфе и в коллбек выкидывать готовый для работы объект(ы). |
GBee - вот такой вот подход обычно и является другом девочки *утечки памяти*. Я естественно понимаю, как это сделать. Тут именно вопрос как сделать красиво, не пересоздавая каждый раз классы
|
Вам шашечки или ехать? Это просто обертка над лоадером, вы же все равно новый лоадер создаете.
Можно забацать маппинг тип=запрос+параметры (в хмл или хардкодом или как угодно) и автоматизируете все это, чтобы само все там что-то делало. У вас же все равно где-то есть вызов. Непонятно, у вас урлы что ли не отличаются никак? Тыкаетесь в один, а он разные ответы шлет? |
Т.е вам не пришел комплит от старого запроса, а вы уже новый реквестите. Прикольно.
|
Цитата:
|
Только в том если последовательность ответов имеет значение.
|
Я с Пчолом согласен.
Тут "команда" спасет. Один запрос - одна команда. (Либо нечто похожее на RPC.) Ты ее вызвал - она сама отработала, сама результат получила, сама разобралась что с ответом делать. Чтобы не было утечек нужно предусмотреть какой-то CommandController. В котором будет храниться список текущих активных команд. Плюс например сама команда будет в это контроллер диспатчить "комплит" по завершению обработки ответа, а контроллер ее грамотно дестроить. Хотя я бы по голове серверщикам настучал лучше, ибо все мои привычные подходы подразумевают асинхронный подход к общению с сервером. Но если бы "був час та натхнення" - то заморочился бы так как описал. |
я просто делаю массив (колбэков или типов событий для диспатча) и массив реквестов, пушу все в массив , и начинаю загрузку, с нулевого элемента, когда приходит ответ, делаю то что надо с ответом и колбек функцией, и делаю шифт массивов, и перевызываю функцию загрузки.
|
Другими словами, ты создаешь очередь и сдвигаешь ее по мере прихода комплита, посылая очередной реквест от следующего элемента в очереди. Если, так, то правильно. Только непонятно, что такое "пушить асинхронно".
|
| Часовой пояс GMT +4, время: 07:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.