1

我有一个 App Engine GWT 应用程序。在我的客户端代码中,我收到了登录用户的电子邮件,并希望显示它。我通过对服务器的请求收到用户的电子邮件。

问题是 getUserEmail() 方法是在执行onModuleLoad() 方法之后执行的,因此 userEmail-String 将在我想要显示它的地方显示为 null。我已经检查了 getUserEmail() 方法实际上是否返回了正确的信息,如上所述,我的问题是我得到我想要的信息时。谁能指出我为什么会发生这种情况以及如何解决这个问题?

public String userEmail;

@Override
public void onModuleLoad() {
        getUserEmail();
        HTML mHTML = new HTML();
        mHTML.setHTML("<HTML><BODY> Logged in as " + userEmail + "</BODY></HTML>");
        RootPanel.get().add(mHTML);
}

public void getUserEmail(){

    requestFactory.getUserEmailRequest().getUserEmail().fire(
        new Receiver<String>()  {
                @Override
                public void onSuccess(String result) {
                        userEmail = result; 
                    }
                }); 
}
4

1 回答 1

3

方法 getUserEmail() 是异步方法调用。如果你想在 callBack 之后执行代码,那么你应该把它写在内部类中:

public void getUserEmail(){

requestFactory.getUserEmailRequest().getUserEmail().fire(
    new Receiver<String>()  {
            @Override
            public void onSuccess(String result) {
                    userEmail = result; 

                    HTML mHTML = new HTML();
                    mHTML.setHTML("<HTML><BODY> Logged in as " + userEmail + "</BODY></HTML>");
                    RootPanel.get().add(mHTML);
                }
            }); 
}
于 2013-11-02T23:54:29.323 回答