Задержка обновления данных в панели GWT при медленном интернете

Я использую GWT 2.5.1.

В моем веб-приложении GWT у меня есть объект ComplexPanel, который содержит набор полей (виджетов). Есть предлагаемое поле (на панели), которое дает мне возможность найти объект и информацию о нем. Поля (их 10-15) содержат информацию об этом объекте.

Проблема в том, что когда у пользователя (на стороне клиента) медленное интернет-соединение, поля в форме обновляются с задержкой. И если в момент задержки пользователь нажимает кнопку «Сохранить» (AsyncCallback), старые данные (которые не обновляются) отправляются на сервер.

Как это работает: 1. Сервер получает обратный вызов от формы и приступает к обработке данных. 2. Сервер обновляет все поля новыми данными и завершает работу. 3. Javascript обновляет данные в форме, используя около 10 запросов. Но: интернет медленный и одна часть данных обновляется, а другая нет. 4. Пользователь нажимает СОХРАНИТЬ, и смешанные данные отправляются на сервер.

Мне нужно знать (со стороны сервера), когда все поля обновляются на стороне клиента, и сервер может приступить к следующему почтовому запросу.

Спасибо за любой совет.


person kambur    schedule 27.08.2014    source источник


Ответы (1)


Выполните проверку достоверности при нажатии кнопки «Сохранить». Есть несколько вещей, которые вы можете сделать в соответствии с вашими требованиями. Я перечислил один из способов проверки.

  1. Перед выполнением асинхронного вызова установите флаг false. Например, isLoaded = false
  2. Когда у вас есть все поля, просто обновите их до true, т.е. isLoaded = true
  3. В обработчике кнопки сохранения проверьте наличие флага isLoaded. Если false, запросите сообщение, иначе сохраните.

Обновление:

Вы можете подсчитать количество полученных ответов. Вы знаете, что получите 10 ответов. Таким образом, для каждого полученного ответа увеличивается счетчик. Активируйте сохранение, только если вы получили все 10 ответов.

Чтобы сделать это проще, используйте gwt-async-future.

person pratZ    schedule 27.08.2014
comment
Спасибо за ваш ответ. Настоящая проблема в том, что я не знаю (со стороны сервера), когда все поля обновляются на стороне клиента. Как это работает: 1. Сервер получает обратный вызов от формы и приступает к обработке данных. 2. Сервер обновляет все поля новыми данными и завершает работу. 3. Javascript обновляет данные в форме, используя около 10 запросов. Но: интернет медленный и одна часть данных обновляется, а другая нет. 4. Пользователь нажимает СОХРАНИТЬ, и смешанные данные отправляются на сервер. Мне нужно знать (со стороны сервера), когда все поля обновляются на стороне клиента. - person kambur; 27.08.2014