Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT中RPC调用后的流?_Java_Gwt_Gwt Rpc_Gwt2 - Fatal编程技术网

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();