我正在尝试使用RPC调用从服务器获取数据 - >数据库然后填充我的客户端小部件,如ListBox,Grid等。问题是,由于调用是异步的,因此无法保证客户端运行时将等待服务器调用返回,然后使用回调结果中的数据填充小部件。有没有办法做到这一点?
的问候, Ĵ
答案 0 :(得分:0)
按照设计,无法在GWT中发出同步请求。但是,在数据从服务器返回之前,您可以避免显示小部件(并且可能显示微调器)。执行此操作的方法是使窗口小部件在从服务器获取数据时使用的AsyncCallback
调用的方法中可见。
下面是一个例子(实际上,你可能会在表单级别执行此操作,而不是使用小部件级别,但是您可以理解这一点。)
AsyncCallback<List<Option>> callback = new AsyncCallback<List<Option>>() {
public void onFailure(Throwable caught) {
processError(caught);
}
public void onSuccess(List<Option> result) {
updateListBox(result);
showListBox();
}
};
myRemoteService.getOptions(callback);
答案 1 :(得分:0)
当您开始获取数据时,您可能会显示模式对话框(带有“获取数据”或任何更高级别的消息),然后您可以在RPC调用终止时关闭对话框。另一种方法是使用您根据需要激活/取消激活的小型加载面板:例如here