GWT: как создать свои собственные асинхронные методы?

1

Есть ли способ сделать мои собственные асинхронные методы в GWT? Я использую gwt 2.7 и кажется, что никакие классы параллелизма Java не совместимы с gwt.

Вот моя история. Моя клиентская сторона имеет класс обслуживания, который кэширует некоторые данные сервера. Он имеет обычный метод получения (синхронный) для получения кэшированных данных, а также имеет метод перезагрузки для обновления кеша (конечно, он асинхронный). После отправки запроса на перезагрузку метод getter должен быть отключен до тех пор, пока не будет выполнено обновление.

Прямо сейчас, каждый раз, когда я использую метод getter, я обматываю его внутри таймера. Он отлично работает, но мне интересно, есть ли лучший способ сделать это. Это слишком большой шаблонный код.

    final AutoProgressMessageBox messageBox = 
            ServiceManager.createProgressMessage("Progress", "Loading Products...");
    Timer timer = new Timer(){
        @Override
        public void run() {
            if(!serviceManager.isProductLocked()){
                // already loaded
                serviceManager.getProducts();
                // do my work...
                messageBox.hide();
                this.cancel();
            }
        }
    };
    timer.scheduleRepeating(2000);
Теги:
asynchronous
gwt

1 ответ

0

GWT имеет класс Scheduler, который позволяет вам получить доступ к некоторым статическим методам, имитирующим многопоточную среду. В частности, вас может заинтересовать метод Scheduler.scheduleFixedPeriod:

Записывает повторяющуюся команду, которая запланирована с постоянной задержкой. То есть следующий вызов команды будет запланирован для delayMs миллисекунд после завершения последнего вызова.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню