2012-03-07 2 views
4

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

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

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

С уважением, Dmitriy.

ответ

1

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

0

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

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

Смежные вопросы