GWT: Как поставить событие в очередь (эквивалентно Swing invokeLater ())? - PullRequest
8 голосов
/ 23 марта 2012

Имеет следующий сценарий: размытие текстового поля (ввод) записывает текст в мой блок состояния (при определенных условиях) и нажатие кнопки также записывает текст в блок состояния.

Теперь при нажатии кнопки мой текстовый блок будет размыт, если он будет сфокусирован, и это приведет к мерцанию поля состояния, так как сначала blurHandler запишет свой результат, а затем clickHandler. Поскольку я хочу, чтобы результат clickHandler отображался, моя идея - позволить blurHandler поместить событие в конец очереди, который проверяет, записал ли clickHandler результат раньше.

В Swing я бы попробовал SwingUtilities .invokeLater (Runnable). Эквивалентом в GWT называется планировщик 1008 *, но эти отложенные или окончательные команды, кажется, всегда выполняются после текущего события и перед следующим. До сих пор я использую Scheduler.scheduleFixedDelay с задержкой 100 мс и надеюсь, что это происходит после clickHanlder в каждом браузере. См. проблема с ответом.

Я думаю, что для этого должно быть лучшее решение. Как действительно добавить событие в конец очереди или это невозможно из-за ограничений HTML?

1 Ответ

5 голосов
/ 23 марта 2012

Попробуйте:

Scheduler.get().scheduleDeferred(new Command() {

                        @Override

                        public void execute() {
                                .......
                        }
                });

См

Планировщик классов

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