Java GWT中RPC调用后的流?
输出Java GWT中RPC调用后的流?,java,gwt,gwt-rpc,gwt2,Java,Gwt,Gwt Rpc,Gwt2,输出 public Class GUi(){ // More Code public void onClick(ClickEvent event) { LoginServer loginServer =new LoginServer(getTextBoxUsername().getText(),getTextBoxPassword().getText()); loginServer.setConnection(connection); connection=loginServe
public Class GUi(){
// More Code
public void onClick(ClickEvent event) {
LoginServer loginServer =new LoginServer(getTextBoxUsername().getText(),getTextBoxPassword().getText());
loginServer.setConnection(connection);
connection=loginServer.getConnection();
System.out.println(" connected "+connection);
// More code
}
public class LoginServer {
// more code
public void setConnection(Boolean connection) {
String[] authentication = {username,password};
//RPC call
connectionService.connectionServer(authentication, callbackConnection);
System.out.println("setConnection" + connection);
}
public Boolean getConnection() {
return connection;
}
AsyncCallback callbackConnection = new AsyncCallback() {
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
connection=false;
}
public void onSuccess(Object result) {
connection=true;
System.out.println("onSuccess + connection);
}
};
}
根据我的说法,输出应该是
setConnectionnull
connected null
onSuccesstrue
因为我创建了LoginServer的对象代码>然后我调用方法setConnection
,其中编写了RPC调用,该调用工作得非常好。
OnSucces
将更改连接的值。
然后我调用了方法getConnection
我也不明白为什么当/如果你让你的妻子/女朋友给你带啤酒时,你的手上没有啤酒,你可以继续观看比赛并做出反应,你不会被阻止等待啤酒:这就是所谓的异步处理
类似地,connection
在发送RPC调用后的第二秒仍然是null
参见当/如果你让你的妻子/女朋友给你带啤酒时,在你问她之后的第二秒,你手中没有啤酒,你可以继续观看比赛并做出反应,你不会被阻止等待啤酒:这称为异步处理
类似地,connection
在发送RPC调用后的第二秒仍然是null
看
这是因为回调函数是异步执行的。也就是说,在服务器向浏览器发送响应后,将调用此函数。但是代码的另一部分像
setConnectionnull
在连接仍然为空时立即执行
谢谢,
甘尼什
这是因为回调函数是异步执行的。也就是说,在服务器向浏览器发送响应后,将调用此函数。但是代码的另一部分像
setConnectionnull
在连接仍然为空时立即执行
谢谢,
甘尼什(Ganesh):)很好的解释。上面的链接不是一个好链接。我的意思是页面没有打开。你能给我推荐一些方法吗?它可以用来等待asyncCall完成,然后执行Reming代码。我完全理解你的观点。有什么解决办法吗。我想在完成asyncInterface的执行之前停止其他方法。所有其他代码都依赖于async的成功。例如,LoginGui call Login类中存在异步调用。事件成功后,将加载下一页。我无法在Onsuccess方法中创建另一个下一页的对象。正如我想分离GUI和逻辑部分一样。向setConnection
方法添加一个回调参数,以便在成功时调用onSuccess
(或者,更简单的是,向方法传递一个AsyncCallback
,直接传递给RPC;或者只需删除LoginServer
并直接使用connectionService
)很好的解释。上面的链接不是一个好链接。我的意思是页面没有打开。你能给我推荐一些方法吗?它可以用来等待asyncCall完成,然后执行Reming代码。我完全理解你的观点。有什么解决办法吗。我想在完成asyncInterface的执行之前停止其他方法。所有其他代码都依赖于async的成功。例如,LoginGui call Login类中存在异步调用。事件成功后,将加载下一页。我无法在Onsuccess方法中创建另一个下一页的对象。正如我想分离GUI和逻辑部分一样。向setConnection
方法添加一个回调参数,以便在成功时调用onSuccess
(或者,更简单的是,向方法传递一个AsyncCallback
,直接传递给RPC;或者只需删除LoginServer
并直接使用connectionService
).嗨,NewCodeLearner,在onSuccess中创建下一页的对象。也就是说,在.Ya之前不要初始化它,但是有些面板需要setvisible(false)代码>像这样if(Boolean.TRUE.equals(connection)){loginPanel.getParent().getParent().getParent().setVisible(false);NexPage NexPage=newnexpage();
Hi newcode学习者,在onSuccess中创建nextPage的对象。也就是说,不要在.Ya之前初始化它,但是有些面板需要setVisible(false)类似这样的if(Boolean.TRUE.equals(connection)){loginPanel.getParent().getParent().getParent().setVisible(false);NexPage NexPage=new NexPage();
connection=loginServer.getConnection();