我使用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()是不可接受的。
最佳答案
您应该为对服务器的连续请求定义单独的回调。因为您将永远不知道首先处理哪个请求并返回给客户端。这取决于您在服务器端执行的处理类型。因此,为回答您的问题,回调未按在代码中出现的顺序实现。
作为提示,您的服务器调用方法应如下所示:
void serverCall(String inputParam) {
if(inputParam.startsWithText.equals("changeRep")
processChangeRepInput(inputParam);
}
并且processChangeRepInput函数应该定义一个回调,其onSuccess方法可以调用另一个方法,例如processGitInput(),该方法又定义了自己的回调,并且在onSuccess方法中可以调用任何下一个服务器端数据库更新您想要做的。