![]() |
Синхронный обмен клиент-сервер
Всем привет. Ситуация такая: Использую связку
Java + BlazeDS + Flex, все работает прекрасно, но появилась новая задача: нужно на клиенте выполнить проверку, которую может сделать только сервер. А именно проверка добавляемой пользователем строки в таблицу на уникальность полей. Как осуществить проверку когда все запросы на сервер асинхронные? Как остановить выполнение программы до получения ответа от сервера? выполнять нужное действие в обработчике события result объекта не вариант, потому что это сильно усложняет код, когда процедура добавления строки по сути своей линейна разносить ее на части ради одной проверки очень некрасиво. |
Синхронный запрос на сервер - пока не реализуем. Смотрите другие варианты
|
С этим уже смирился..
можно я приведу ужасный код а вы мне скажите что здесь можно поправить? Код AS3:
Thread.wait(res) - идея такая. Возможно ли подобным образом организовать остановку выполения во флексе? |
Нет, нельзя, AVM работает в одном потоке.
|
Спасибо :) А другие типы взаимодействия клиент-сервер?
Web-service, ... (больше не знаю) Они все асинхронные? |
Цитата:
|
Большое спасибо, вопрос исчерпан :)
|
Можно "по-каличному" сделать синхронный запрос: через внешний интерфейс выполнять javascript'ом через ajax синхронный запрос (абсурдно, но позволяет) запрос, получать ответ и возвращать назад во флеш. На время ожидания блокировать ввод. Очень чревато, так как на время ожидания поток javascript останавливается полностью, даже таймеры и хандлеры. Если не обращать на безопасность передачи, то выполнимо.
|
А зачем вообще это делать?
|
To IDimitry: Спасибо ) но через Javascript это все таки слишком ))
То Etc: Я в первом вопросе объяснял зачем - чтобы встроить запрос в целую линейку разных проверок. То есть например оп реакции пользователя начнаем проверять корректность данных, проверяем введенные значения регуляркой и тд... Так вот если мы хотим одну из проверок выполнить на сервере, например проверить уникальность объекта, то нам придется разбивать цепочку проверок как минимум на две части: 1) первая часть - заканчивающаяся посылкой запроса 2) вторая часть - в обработчиках событий result и failed. Очень обидно идти на такие ухищрения ради одного boolean Может быть кто то подскажет грамотное архитектурное решение? Я сам на FLEX пишу не давно, и возможно невольно тащу сюда привычки из offline кодинга. |
| Часовой пояс GMT +4, время: 11:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.