2015-12-21 111 views
10

我正在嘗試使「許多」xhr請求,但似乎每次它在發出另一個請求之前等待答案。這就像XHR產生一個隊列,並始終等待先前的請求完成。xmlhttprequest同時請求不起作用

我該怎麼做才能同時運行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(); 
    }); 
+0

您是否嘗試過使用網絡工作者? – mrapsogos

+0

是,同樣的事情happens..Both工人被稱爲在一起,但第二XHR等待第一個XHR完成 –

+0

如何打開新的瀏覽器窗口,使requset,使用後的消息發送響應,然後關閉窗口?只是想法可能會幫助..不太熟悉這個問題。 – mrapsogos

回答

11

不是很多。

瀏覽器執行限制於:

  • 平行的HTTP請求的給定的原點
  • 總共平行的HTTP請求(這是一個更大的限制)

數目的數目如果你在多個原件之間分割你的請求,你可能會發現你的約束從第一個到第二個被提出。

+1

我已經看到,由鉻強制執行的限制應該是6最大要求,是嗎? –

2

試着找一些關於http2,有一些info。 Http2協議可以更好地支持並行請求。