Javascript xmlhttprequest同时请求不工作

Javascript xmlhttprequest同时请求不工作,javascript,asynchronous,xmlhttprequest,Javascript,Asynchronous,Xmlhttprequest,我试图发出“许多”xhr请求,但似乎每次它都会在发出另一个请求之前等待答案。这就像XHR创建一个队列,总是等待前一个请求完成 我可以做些什么来运行更同步的xhr请求 $('body').delegate('download','click',函数(evt){ evt.preventDefault();//不相关 var xhr=new XMLHttpRequest(); open('GET','proxy.php?+this.href,true); xhr.responseType='blob'

我试图发出“许多”xhr请求,但似乎每次它都会在发出另一个请求之前等待答案。这就像XHR创建一个队列,总是等待前一个请求完成

我可以做些什么来运行更同步的xhr请求

$('body').delegate('download','click',函数(evt){
evt.preventDefault();//不相关
var xhr=new XMLHttpRequest();
open('GET','proxy.php?+this.href,true);
xhr.responseType='blob';
xhr.onload=函数(){
如果(this.status==200){
var blob=new blob([this.response],{type:'audio/mp4'});
控制台日志(blob.size);
如果(水滴大小>0){
$(“”)。属性({
下载:name,,
href:URL.createObjectURL(blob),
目标:“_blank”
})[0]。单击();
}
}
};  
xhr.send();
});
不多

浏览器对以下内容实施限制:

  • 到给定源的并行HTTP请求数
  • 并行HTTP请求总数(这是一个较大的限制)

如果您将请求拆分为多个原始请求,您可能会发现您的约束从上面的第一个到第二个都会出现。

尝试查找有关http2的信息,有一些限制。Http2协议更好地支持并行请求。

我已经看到chrome强制执行的最大请求限制应该是6个,对吗?您是否尝试使用web worker?是的,同样的情况发生了。两个worker都被调用在一起,但第二个XHR等待第一个XHR完成如何打开新的浏览器窗口,发出请求,使用post消息发送响应,然后关闭窗口?只是一些有帮助的想法。。不太熟悉这个主题。再想一想,使用更多变量或数组或对象来存储xhr。。在服务器响应之前,该变量可能仍在使用。您是否使用jquery deferred尝试过它?只是想一想。
$('body').delegate('.download','click', function(evt){
        evt.preventDefault(); // Not related

        var xhr = new XMLHttpRequest();
        xhr.open('GET', "proxy.php?" + this.href, true);
        xhr.responseType = 'blob';

        xhr.onload = function() {
            if (this.status == 200) {              
                var blob = new Blob([this.response], {type:'audio/mp4'});

                console.log(blob.size);
                if(blob.size > 0){
                    $("<a>").attr({
                        download: name,
                        href: URL.createObjectURL(blob),
                        target: "_blank"
                    })[0].click();
                }
            }
        };  
        xhr.send();
    });