2015-03-24 3 views
1

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

Вот моя история. Моя клиентская сторона имеет класс обслуживания, который кэширует некоторые данные сервера. Он имеет обычный метод получения (синхронный) для получения кэшированных данных, а также имеет метод перезагрузки для обновления кеша (конечно, он асинхронный). После отправки запроса на перезагрузку метод 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); 

ответ

0

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

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

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