有没有办法在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);
GWT有Scheduler
类,它允许您访问一些模拟多线程环境的静态方法。具体来说,您可能对Scheduler.scheduleFixedPeriod
方法感兴趣:
计划具有恒定延迟的重复命令。也就是说,命令的下一次调用将在上一次调用完成后延迟几毫秒。