2011-01-05 2 views
1

Возможно ли сделать блокировку gwt rpc? то есть приложение блокируется до тех пор, пока не будет получен ответ от сервераGWT делает блокировку RPC

+0

Возможно, вы захотите добавить немного больше информации. Блокировка звонков в приложении javascript (что в конечном итоге сводится к GWT) почти никогда не является хорошей идеей. У вас должны быть действительно веские причины для этого, и большинство вещей можно решить, используя асинхронные вызовы (например, установите флаг и не выполняйте определенные вещи, если он установлен). – tdammers

+0

У меня есть приложение, которое можно полностью загрузить, если данные пользователя получены с сервера, поэтому, когда приложение запускается, я делаю RPC, а затем результат из rpc используется для подачи в приложении, я не могу продолжать, пока данные из rpc получены, поэтому я хочу сделать блокировку rpc так, что только когда rpc завершится, приложение может начать – Noor

ответ

4

Насколько я знаю, блокировка gwt rpc отсутствует, потому что это противоположная идея для асинхронного обратного вызова.

Но вы можете использовать эти два метода

  1. Таймер. Считайте таймер и убедитесь, что есть какой-либо объект возврата, который не равен нулю, и остановите и отмените таймер и продолжите работу. Если таймер активен, не выполняйте другую работу. Это очень неэффективный способ. Отсутствие шаблона проектирования OO и слишком много утверждений if-else-if
  2. Позвоните в Rpc и выполните все действия в onSuccess(). Это гарантирует, что ваш метод будет завершен и успешно закончен, а затем продолжите другие методы.

Мой совет - второй (onSuccess). Я хочу еще раз упомянуть, что блокирование никогда не является хорошей идеей

0

Самое простое решение, которое пришло мне в голову, было бы «заблокировать» ваше приложение от точки, где начинается асинхронный вызов до заполнения, который будет в конце метода onSuccess().

Блокировка Я имею в виду, чтобы показать только animated loading gif в середине страницы.