GWT同步

GWT同步,gwt,synchronization,Gwt,Synchronization,我正在用gwt做一个函数 它向服务器发送一个IQ节,并且必须等待服务器应答 在函数中,我创建了一个处理程序,该处理程序等待服务器对该IQ节的应答 因此,我需要的是让函数等待服务器的响应,然后再执行其他操作 我是gwt的初学者,所以任何想法都很好 谢谢 public-void-getServices() { IQ=新的IQ(IQ.Type.get); setAttribute(“to”,session.getDomainName()); iq.addChild(“查询”http://jabber.

我正在用gwt做一个函数
它向服务器发送一个IQ节,并且必须等待服务器应答
在函数中,我创建了一个处理程序,该处理程序等待服务器对该IQ节的应答

因此,我需要的是让函数等待服务器的响应,然后再执行其他操作
我是gwt的初学者,所以任何想法都很好
谢谢

public-void-getServices()
{
IQ=新的IQ(IQ.Type.get);
setAttribute(“to”,session.getDomainName());
iq.addChild(“查询”http://jabber.org/protocol/disco#items");
session.addResponseHandler(iq,新ResponseHandler()
{
public void onError(IQ IQ、ErrorType ErrorType、ErrorCondition ErrorCondition、字符串文本)
{
}
公开结果(IQ)
{
}
});
会话发送(iq);
}

您可以使用
onResult
方法进行此操作。将服务器响应之后需要执行的所有代码放在那里

看起来不错。问题是什么?但是我需要函数getServices根据应答返回一个布尔值。异步请求的整体思想是getServices可能在服务请求完成之前返回,从而避免等待:)因此,getServices的结果类型不能依赖于服务调用的结果。如果您需要根据服务调用的成功/失败来执行某些代码,那么还应该在onResult/onError方法中包含该检查。使用这两种方法来调用代码的“真分支”和“假分支”。@hdantas-你应该经历一个惊人的“冰箱里的啤酒”类比-。@Eric我正试图找到一种方法来实现这一点,我现在找到了一种方法,谢谢你的解释
public void getServices()
    {
        IQ iq = new IQ(IQ.Type.get);
        iq.setAttribute("to", session.getDomainName());
        iq.addChild("query", "http://jabber.org/protocol/disco#items");

        session.addResponseHandler(iq, new ResponseHandler() 
        {
            public void onError(IQ iq, ErrorType errorType, ErrorCondition errorCondition, String text) 
            {
                <do stuff>
            }
            public void onResult(IQ iq) 
            {
                <do stuff>
            }
        });

        session.send(iq);

        <after receiving answer do stuff>   
    }