2015-12-21 28 views
10

Tôi đang cố thực hiện yêu cầu "nhiều" xhr nhưng có vẻ như mỗi khi nó chờ câu trả lời trước khi thực hiện một yêu cầu khác. Giống như XHR tạo hàng đợi và luôn đợi yêu cầu trước đó kết thúc.xmlhttprequest yêu cầu đồng thời không hoạt động

Tôi có thể làm gì để chạy đồng thời hơn xhr yêu cầu?

$('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

bạn đã thử sử dụng nhân viên web chưa? – mrapsogos

+0

Có và điều tương tự cũng xảy ra..Người lao động được gọi cùng nhau nhưng XHR thứ hai chờ XHR đầu tiên hoàn thành –

+0

Làm cách nào để mở cửa sổ trình duyệt mới, thực hiện requset, sử dụng thông báo bài đăng để gửi phản hồi và sau đó đóng cửa sổ? Chỉ là những suy nghĩ có thể giúp .. không phải rất quen thuộc với chủ đề này. – mrapsogos

Trả lời

11

Không nhiều.

trình duyệt thực thi một giới hạn về:

  • Số lượng yêu cầu HTTP song song với một nguồn gốc cho
  • Số lượng yêu cầu HTTP song song trong tổng số (đây là một giới hạn lớn hơn)

Nếu bạn chia nhỏ các yêu cầu của mình giữa nhiều bản gốc hơn, bạn có thể thấy ràng buộc của mình được nâng lên từ thứ nhất đến thứ hai của phần trên.

+1

Tôi đã thấy rằng giới hạn được thực thi bởi chrome phải là trong số 6 yêu cầu tối đa, đúng không? –

2

Cố gắng tìm nội dung nào đó về http2, có một số info. Giao thức HTTPS2 có hỗ trợ tốt hơn các yêu cầu song song.

Các vấn đề liên quan