Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT:如何创建我自己的异步方法?_Java_Gwt_Asynchronous - Fatal编程技术网

Java GWT:如何创建我自己的异步方法?

Java GWT:如何创建我自己的异步方法?,java,gwt,asynchronous,Java,Gwt,Asynchronous,有没有办法在GWT上创建自己的异步方法?我使用的是GWT2.7,似乎没有java并发类与gwt兼容 这是我的故事。我的客户端有一个服务类,它缓存一些服务器数据。它有一个普通的getter方法(同步)来获取缓存数据,还有一个reload方法来更新缓存(当然,它是异步的)。发送重新加载请求后,应该禁用getter方法,直到更新完成 现在,每次使用getter方法时,我都会将其包装在计时器中。这很好,但我想知道有没有更好的方法。这是太多的样板代码 final AutoProgressMessa

有没有办法在GWT上创建自己的异步方法?我使用的是GWT2.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);
GWT有一个类,它允许您访问一些模拟多线程环境的静态方法。具体而言,您可能对以下方法感兴趣:

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