GWT: многопоточность - PullRequest
       2

GWT: многопоточность

2 голосов
/ 17 октября 2011

Я сталкиваюсь с этой проблемой: после нажатия кнопки я делаю запрос к серверу и получаю некоторые данные; затем я отображаю данные на новой странице / просмотре. Это создает проблему: пользовательский интерфейс должен ждать, пока выполняется запрос, а данные принимаются, анализируются и устанавливаются в представлении. Это приводит к тому, что пользователю приходится ждать загрузки всех данных, прежде чем он сможет вернуться, и даже не имеет возможности отменить вызов. Многопоточность решит проблему, и вот где мне нужна помощь.

Веб-работники HTML5 справились бы со мной, однако я не хочу «жестко кодировать» их в JSNI и записывать все вызовы с использованием Javascript вместо GWT Java (RequestBuilder). Я читал о DeferredCommand, но также не думаю, что это ответ на мою проблему.

Есть предложения? Или это невозможная оптимизация, на данный момент?

1 Ответ

2 голосов
/ 17 октября 2011

В JS, следовательно, GWT, нет многопоточности. Вместо этого вы должны использовать асинхронные вызовы с обратными вызовами. Обычно, когда вы используете GWT RPC для связи, вы отправляете запрос и обрабатываете результат в событии onSuccess. В качестве альтернативы вы всегда можете использовать Timer, чтобы периодически проверять результат. Я не уверен, какой запрос вы делаете, поэтому сложно быть конкретным. Возможно, вам следует проверить соответствующий раздел Связь с сервером

РЕДАКТИРОВАТЬ: Я только что заметил, что вы упомянули RequestBuilder . SendRequest () не должен блокировать выполнение, и вы должны обработать результат в RequestCallback.onResponseReceived() предоставленного обратного вызова. Это означает, что вы как-то продолжаете обработку событий кнопки в этом обратном вызове

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...