Потоки в GWT (Клиент) - PullRequest
       12

Потоки в GWT (Клиент)

47 голосов
/ 07 апреля 2010

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

У меня есть пара десятков процессов, которые нужно будет запустить в моем приложении GWT, после чего каждый процесс будет непрерывно совершать вызовы на сервер. GWT поддерживает многопоточность? Поддерживает ли GWT на стороне клиента многопоточность?

EDIT:

Эта ссылка сообщает:

No JavaScript knowledge required If you’re just a user of the framework, 
which I am for the matter of discussion, you do not need to know JavaScript 
in order to write dynamic content, be it client-side such as rolling frames, 
docking panels or scheduled “multi-threading” tasks, or server-side calls 
using XMLHttpRequests (aka AJAX). 

или запланированные задачи «многопоточности» , что это значит?

Ответы [ 4 ]

35 голосов
/ 07 апреля 2010

JavaScript не поддерживает многопоточность. Однако в GWT есть класс для «имитации» многопоточности, который не является реальной многопоточностью, но в большинстве случаев делает то, что вам нужно: com.google.gwt.core.client.Scheduler.ScheduledCommand. Техника основана на классе таймера, который выполняет метод по истечении заданного времени.

Например, при размещении следующего кода в вашем собственном коде метод scheduleDeferred будет возвращен напрямую, и ваш код будет продолжен после команды, а метод execute() выполняется с использованием таймера:

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
   public void execute() {
      .. code here is executed using the timer technique.
   }
});

Вы можете создать повторяющуюся команду RepeatingCommand, которую можно использовать для запуска команды более одного раза. Запустите его с Scheduler.get().scheduleIncremental(), который будет выполнять команду до тех пор, пока метод execute не вернет false. Вы можете использовать это, чтобы разделить задачи на подзадачи, чтобы получить лучшее «многопоточное» поведение. Scheduler поддерживает некоторые дополнительные методы для запуска запланированной команды по-другому. Подробнее см. JavaDoc .

Отредактировано и обновлено новым классом GWT вместо устаревшего DeferredCommand.

3 голосов
/ 07 апреля 2010

Работа с Web Workers осуществляется в рамках HTML5, который реализован во многих браузерах, но не во всех (особенно в Internet Explorer). Вы можете использовать эти функции там, где они есть, но вам следует взглянуть на модель программирования javascript.

Javascript обычно работает асинхронно. Запросы выполняются, и в какой-то момент их ответы принимаются как событие. Вы можете иметь большое количество ожидающих запросов одновременно. Это потребует небольшой доработки вашей системы.

1 голос
/ 31 марта 2012

Новый способ заключается в использовании Планировщика

0 голосов
/ 07 апреля 2010

JavaScript не поддерживает многопоточность, поэтому, что бы ни делал GWT, многопоточность должна выполняться исключительно на стороне сервера, потому что GWT может использовать только те функции, которые уже доступны на стороне клиента.

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