我想从服务器获取两个XML文档,并在两者都到达时继续处理。我可以并行获取它们,还是在完成第一个请求之前必须避免发出第二个请求?
答案 0 :(得分:2)
您可以并行获取它们,但请记住,浏览器对并行请求的数量有限制,请参阅http://www.browserscope.org/?category=network(在左上角的下拉列表中选择“主要版本”以查看更多版本) 。特别注意,IE< 8每个主机名限制为2个连接!
如果您仍想执行此操作,请注意响应可以按任何顺序到达。因此,您必须实施能够跟踪请求/响应(计数器或更复杂的内容)的内容,以便您知道所需的所有响应何时到达。
最好的解决方案通常是只发送一个请求两个XML文档的请求,服务器在一个响应中同时返回它们。
答案 1 :(得分:1)
发出两个请求,然后检查其中一个是否完成另一个请求是否完成,如果完成则继续检查。
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();
}
}
});
}
正如克里斯指出的那样,这可能会达到对同一主机名的最大并发请求的上限,因此如果您有大量请求一次发送,您可以保留一个请求队列并调用{{1中的下一个请求直到队列耗尽为止。
但是如果你计划有很多并发请求,你可能需要重新设计你的服务,一起批量操作。