等待多个事件(使用GWT)
我想从服务器获取两个XML文档,并在它们都到达后继续处理。我可以并行获取它们,还是必须在第一个请求完成之前避免发出第二个请求?您可以并行获取它们,但请记住浏览器对并行请求的数量有限制,请参阅(在左上角的下拉列表中选择“主要版本”以查看更多版本)。特别要注意的是,IE<8限制每个主机名只能有2个连接 如果您仍然想这样做,那么请注意响应可以以任何顺序到达。因此,您必须实现一些跟踪请求/响应的功能(计数器或更复杂的功能),以便知道所需的所有响应何时到达等待多个事件(使用GWT),gwt,gwt-rpc,Gwt,Gwt Rpc,我想从服务器获取两个XML文档,并在它们都到达后继续处理。我可以并行获取它们,还是必须在第一个请求完成之前避免发出第二个请求?您可以并行获取它们,但请记住浏览器对并行请求的数量有限制,请参阅(在左上角的下拉列表中选择“主要版本”以查看更多版本)。特别要注意的是,IE
最好的解决方案通常是只发送一个请求,请求两个XML文档,服务器在一个响应中同时返回它们。发出两个请求,然后检查其中一个完成时另一个是否完成,如果完成则继续
private String responseOne;
private String responseTwo;
public startRequests() {
makeAsyncRequestOne(new AsyncCallback<String>() {
onSuccess(String response) {
this.responseOne = response;
if (responseTwo != null) {
proceed();
}
}
});
makeAsyncRequestTwo(new AsyncCallback<String>() {
onSuccess(String response) {
this.responseTwo = response;
if (responseOne != null) {
proceed();
}
}
});
}
private-String-responseOne;
私有字符串应答器;
公共startRequests(){
makeAsyncRequestOne(新的AsyncCallback(){
onSuccess(字符串响应){
this.responseOne=响应;
if(responsewo!=null){
继续();
}
}
});
makeAsyncRequestTwo(新的AsyncCallback(){
onSuccess(字符串响应){
this.responsewo=响应;
if(responseOne!=null){
继续();
}
}
});
}
正如Chris指出的,这可能会达到对同一主机名的最大并发请求数的上限,因此如果一次要发送大量请求,则可以保留一个请求队列,并在procedure()
中调用下一个请求,直到队列耗尽
但是,如果您计划有大量并发请求,您可能需要重新设计服务,以便一起批处理操作。谢谢。看起来很简单,可以在我的案例中实现。我不想依赖服务器上的代码来响应这些请求,所以批处理它们似乎不是正确的方法。