![]() |
последовательность обращений к серверу с callback. Как красивее сделать?
Задача - нужно произвести последовательное обращение к одному или нескольким серверам, при каждом новом вызове использовать данные полученные от предыдущего.
Сейчас я юзаю калбеки вот так Код AS3:
Если делать это через события то нагромождение кода будет еще больше, а однозначности все равно не будет, так как не известно однозначно на какое событие надо подписываться. Известны ли кому-то более однозначные решения этой задачи? Или хотя бы более элегантные ? Тоесть чтобы можно было написать это все не читая комментарии к step1,2,3 и не разбирая их код. Спасибо |
Почему бы Вам не сделать какой-нибудь массив-очередь и опрашивать сервер последовательно следуя этой очереди? По получении каждого callback'а проверять остались ли еще незагруженные элементы в очереди. Количество загруженных или оставшихся можно сделать отдельной переменной.
Дерзайте. |
Поставить в очередь - запросто. Но ведь беда не в том что я не могу поставить в очередь а в том что явно не понятно из описания функций step1,2,3 какие параметры и сколько будет принимать onSuccess, а очередь тут не помогает
Добавлено через 41 час 0 минут Кто нибудь? |
Я думаю надо как-то стандартизировать параметры или где-то описать их отдельно, если привести к общему знаменателю никак.
|
Ну тоесть на уровне компиляции это проверить никак не возможно? Вот в шарпе там делегаты описываются со всеми параметрами и если что-то не совпадает в вызове - сразу ошибка еще на этапе компиляции
что приходит тут на ум - это понасоздавать классов - хранителей функций и параметров, типа Function_Int_String_String его параметры забивать в конструкторе. И тогда function Код AS3:
|
Можно сделать примерно так:
Код AS3:
|
Нормально при компиляции проверить, что переданная функция принимает такие-то параметры - никак, ибо тип Function вот такая простая вещь. Я лично этому рад.
Можно передавать не функцию, а айдишник, делать switch по айдишнику и в нем писать имя private метода. Будет что надо, но switch я лично не люблю. Можно поставить в функции проверку на тип аргументов и помирать с криками, если не те, но рантайм будет, да. Но так ли нужна проверка при компиляции на тип данных? Это если там куча народу этот код пишет, то может есть смысл. И это, врачи сильно рекомендуют не создавать динамически функции. Т.е. в любом случае рекомендую сделать. Код AS3:
|
свитч не катит тк тормозить будет если широко внедрить все это. Да народу юзает много этот код, так что хочется сделать попонятнее.
динамические функции всмысле анонимные? Не рекомендуют потому что утечки быть могут? не будут если грамотно все сделать. Кстати в методы класса выносить не обязательно чтобы ф-я перестала быть анонимом, можно просто создать ее именованную внути метода где она нужна. Если же выносить в методы то это ужасно раздует интерфейс Цитата:
|
Посмотрите в сторону GOF-паттерна State.
|
А чем тут он поможет ? причем тут разные состояния ?
|
| Часовой пояс GMT +4, время: 17:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.