xmlhttprequest同时请求不起作用

时间:2015-12-21 23:14:57

标签: javascript asynchronous xmlhttprequest

我试图制作"很多" xhr 请求,但似乎每次在发出另一个请求之前等待答案。就像 XHR 组成一个队列并始终等待上一个请求完成。

如何同时运行 xhr 请求?

$('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();
    });

2 个答案:

答案 0 :(得分:11)

不是很多。

浏览器对以下内容强制执行:

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

如果您在更多原件之间拆分请求,您可能会发现您的约束从上面的第一个提升到第二个。

答案 1 :(得分:2)

尝试找一些关于http2的内容,有一些info。 Http2协议更好地支持并行请求。