【问题标题】:GWT: how to create my own asynchronous methods?GWT:如何创建自己的异步方法?
【发布时间】:2015-03-24 19:49:42
【问题描述】:

有没有办法在 GWT 上创建自己的异步方法?我正在使用 gwt 2.7,似乎没有 java 并发类与 gwt 兼容。

这是我的故事。我的客户端有一个服务类,它缓存一些服务器数据。它有一个普通的getter方法(同步)来获取缓存的数据,它也有一个reload方法来更新缓存。(当然是异步的)。发送重新加载请求后,应禁用 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);

【问题讨论】:

    标签: java gwt asynchronous


    【解决方案1】:

    GWT 有Scheduler 类,它允许您访问一些模拟多线程环境的静态方法。具体来说,您可能对Scheduler.scheduleFixedPeriod 方法感兴趣:

    安排一个以恒定延迟安排的重复命令。也就是说,命令的下一次调用将在最后一次调用完成后的 delayMs 毫秒内调度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      相关资源
      最近更新 更多