Проведение мероприятий в Ваадин

У меня есть следующая проблема. Скажем, пользователь может нажать на какой-то компонент пользовательского интерфейса. Каждый щелчок требует большого количества вычислений и значительно изменяет другие компоненты пользовательского интерфейса, поэтому это чрезвычайно дорого. Порядок кликов не важен.

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

Есть ли способ реализовать такое поведение в Vaadin?

С уважением, Дмитрий.


person Dmitriy Sukharev    schedule 07.03.2012    source источник


Ответы (2)


Ваше приложение выполняется за один сеанс. Учитывая, что не все компоненты пользовательского интерфейса вызывают дорогостоящий перерасчет, вы можете связать прослушиватель с вашим событием. Сохраните копию события и запустите поток таймера. Если приходит новый запрос, сбросьте предыдущее значение. Ключевым элементом здесь является то, что вы должны запустить поток, иначе ваш пользовательский интерфейс зависнет.

person jflamy    schedule 13.03.2012

Чтобы дополнить другой ответ. В книге vaadin есть пример потока для индикатора прогресса. Это показывает, как поддерживать отзывчивость пользовательского интерфейса и использовать поток для обработки событий. Вы можете создать поток, содержащий таймер и получающий сообщения от потоков событий. Затем поток таймера будет реагировать в соответствии с введенными вами ограничениями. Проверьте код индикатора выполнения для примера потока в vaadin:

https://vaadin.com/book/-/page/components.progressbar.html

person rui    schedule 11.06.2012