加入ajax结果?

时间:2010-01-22 16:48:53

标签: javascript ajax concurrency

我需要从2个XMLHttpRequests生成结果。 如何同时发出请求并等待它们完成?

我有点像......

resp1="";
req1.onreadystatechange=function(){if(this.readyState=4)resp1==this.responseText;}
req2.onreadystatechangefunction(){if(this.readyState=4) finish(this.responseText);}
function finish(resp2){
if (resp1=="") setTimeOut(finish(resp2),200);
else {
... both are done...
}

我还没有测试过,但我认为它会起作用。 有没有更好的办法? 我的代码需要尽可能短而快。

1 个答案:

答案 0 :(得分:1)

你不需要计时器。

您需要做的就是检查每个回调是否完成另一个回调,如果是,请致电finish

例如:

var resp1 = null, resp2 = null;

req1.onreadystatechange = function() {
    if (this.readyState === 4) {
        resp1 = this.responseText;
        if (resp2 !== null) finish();
    }
};
req2.onreadystatechange = function() {
    if (this.readyState === 4) {
        resp2 = this.responseText;
        if (resp1 !== null) finish();
    }
};