如何解决GWT中等待RPC响应的问题?
我知道RPC是异步的,但如何以其他方式(而不是等待响应)解决此问题:如何解决GWT中等待RPC响应的问题?,gwt,rpc,Gwt,Rpc,我知道RPC是异步的,但如何以其他方式(而不是等待响应)解决此问题: public static String htsl(String sentence) { final DataBaseAsync db = GWT.create(DataBase.class); String cookie = staticContent.getCookie("ll"); String shortcut = cookie.split("/")[1]; final String[]
public static String htsl(String sentence)
{
final DataBaseAsync db = GWT.create(DataBase.class);
String cookie = staticContent.getCookie("ll");
String shortcut = cookie.split("/")[1];
final String[] lala = new String[1];
database.getTranslated(sentence, shortcut, new AsyncCallback<String>() {
@Override
public void onSuccess(String result) {
lala[0]=result;
//this result I want to return in static function htsl... ?
}
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
});
//here I have blank result, because RPC is slower than te return..
And i have always blank result
return lala[0];
}
公共静态字符串htsl(字符串语句)
{
final DataBaseAsync db=GWT.create(DataBase.class);
字符串cookie=staticContent.getCookie(“ll”);
字符串快捷方式=cookie.split(“/”[1];
最终字符串[]拉拉=新字符串[1];
getTranslated(句子、快捷方式、新AsyncCallback(){
@凌驾
成功时的公共void(字符串结果){
拉拉[0]=结果;
//这个结果我想在静态函数htsl中返回?
}
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
}
});
//这里我有一个空白的结果,因为RPC比te返回慢。。
而我一直都是空白结果
返回拉拉[0];
}
我知道这不好,但是。。如果没有有效的解决方案,如何等待响应?使
htsl
异步(非阻塞,即通过回调响应而不是返回值)这样做:
public static String htsl(String sentence, AsyncCallback<String> myCallback) {
final DataBaseAsync db = GWT.create(DataBase.class);
String cookie = staticContent.getCookie("ll");
String shortcut = cookie.split("/")[1];
final String[] lala = new String[1];
database.getTranslated(sentence, shortcut, myCallback);
}
公共静态字符串htsl(字符串语句,异步回调myCallback){
final DataBaseAsync db=GWT.create(DataBase.class);
字符串cookie=staticContent.getCookie(“ll”);
字符串快捷方式=cookie.split(“/”[1];
最终字符串[]拉拉=新字符串[1];
getTranslated(句子、快捷方式、myCallback);
}
然后让另一个类实现AsyncCallback,将其作为
myCallback
参数传递给htsl
方法和Bob的叔叔。参见Jeroen的答案,与我的答案相同,但带有示例代码。不过,您也可以使用一个或一个自定义接口作为参数,并从RPC的AsyncCallback
调用它。如果您不想向调用者公开错误处理,那么定制接口只能有一个onSuccess
(我宁愿称之为onTranslated
)。