GWT同步
我正在用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.
它向服务器发送一个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>
}