gpt4 book ai didi

java - 如何延迟从 gwt 调用数据库?

转载 作者:行者123 更新时间:2023-11-29 05:26:56 24 4
gpt4 key购买 nike

我用的是gwt+java。应用程序正在使用多个数据库。问题是查询比进程数据库更改快,这就是 ui 中数据不正确的原因。我怎么能延迟呢?

reps.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
final String repPath = reps.getValue(reps.getSelectedIndex());
RootPanel.get("loadingbarImg").setVisible(true);
reps.setEnabled(false);
//next line change database
serverCall("changeRep" + repPath);
//then I update the tables "git" and "bugs"
serverCall("git");
serverCall("bugs");
reps.setEnabled(true);
}
}
);

serverCall() 方法不返回任何值。这是 gwt 的客户端,因此 Thread.sleep() 是 Not Acceptable 。

最佳答案

我认为您错过了最重要的部分。

GWT 是一个客户端/服务器应用程序。 JavaScript 是完全异步的。因此,应用程序将在 serverCall("changeRep"+ repPath); 中进行异步调用;下一次调用可能会在此次调用之后和服务器执行您的“changerep”调用之前立即执行

如果必须保证顺序,则需要实现异步回调:

http://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html

更新

serverCall("firstaction",new AsyncCallback(){

public void onSuccess(Void v /*or what ever*/){
serverCall("secondaction" /*need firstaction to be finished*/,
callBackForSecondaction);
}

public void onError(Exception e){
// Make some errorhandling
}
});

在这种情况下,只有第一个 Action 成功完成后,第二个 Action 才会被执行。在 Java8 之前,异步代码看起来像是回调拼图

关于java - 如何延迟从 gwt 调用数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22362904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com