如何在GWT中使用同步调用或等待调用完成
此方法正在更新测试变量。但问题是,如果条件不等待调用完成,它就会执行并产生错误的结果。任何建议如何在GWT中使用同步调用或等待调用完成,gwt,web,Gwt,Web,此方法正在更新测试变量。但问题是,如果条件不等待调用完成,它就会执行并产生错误的结果。任何建议 ((GWTServiceUsersAsync)GWT.create(GWTServiceUsers.class)).checkSession(callbackcheck); if(test==0) { MessageBox.alert("Access denied", "Access denied, please log in", null); return 0; } else { re
((GWTServiceUsersAsync)GWT.create(GWTServiceUsers.class)).checkSession(callbackcheck);
if(test==0) {
MessageBox.alert("Access denied", "Access denied, please log in", null);
return 0;
} else {
return 1;
}
异步意味着您不知道回调何时发生,这就是它不等待的原因。同样在java中,我们通常使用布尔(真、假)而不是数字。下面是一个您将要做的示例:
GWTServiceUsersAsync service = GWT.create(GWTServiceUsersAsync.class)
service.checkSession(new AsyncCallback() {
public void onSuccess(boolean test) {
if(!test) {
MessageBox.alert("Access denied", "Access denied, please log in", null);
responseHandlingMethod(true);
}
responseHandlingMethod(test);
}
public void onFailure(Exception e) {
responseHandlingMethod(test);
}
}
检查会话之后的其余代码可以在responseHandling方法中处理。我建议您遵循谷歌喜欢的一些教程。您迫切需要重新阅读RPC上的GWT文档。您必须使用回调从服务器获取一些内容。这就是所谓的异步编程,这就是为什么有异步接口。在发布问题之前,请学习GWT基础知识。兄弟,我知道这一点,但问题是如何停止客户端线程,以便更新变量。您不能“停止”客户端线程,这是不可能的。您提供了一个回调。你对RPC有一个基本的误解。再次阅读文档。@TravisWebb如果使用同步XmlHttpRequest,实际上这是可能的,但最终结果很糟糕,因为整个浏览器将冻结,直到请求完成。但它在某些情况下非常有用。