2015-12-21 16 views
10

Ben "çok" xhr istek yapmaya çalışıyorum ama her zaman başka bir istek yapmadan önce cevap bekler gibi görünüyor. XHR kuyruğu yapar ve her zaman bir önceki isteğin bitmesini bekler.xmlhttprequest eşzamanlı istek çalışmıyor

Daha fazla aynı anda çalıştırmak için ne yapabilirim xhr istek?

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

Web çalışanı kullanmayı denediniz mi? – mrapsogos

+0

Evet ve aynı şey olur. İşçi birlikte çağırılır ama ikinci XHR, ilk XHR'nin bitmesini bekler –

+0

Yeni tarayıcı pencereleri açmak, requset'i yapmak, yanıtı göndermek için post mesajını kullanmak ve sonra pencereleri kapatmak nasıl olur? Sadece düşünmeye yardımcı olabilecek düşünceler .. konuya çok aşina değil. – mrapsogos

cevap

11

Çok fazla değil.

Tarayıcılar bir sınır zorlamak:

  • belirli bir kökeni
  • toplam paralel HTTP isteklerine sayısı (bu daha büyük bir sınırıdır)

paralel bir HTTP isteği sayısıdır İsteklerinizi daha fazla orijinal arasında bölüştürüyorsanız, kısıtlamanızı yukarıdakilerin ikincisinden ikincisine yükseltmiş olabilirsiniz.

+1

Krom tarafından zorlanan limitin Maksimum 6 talep, doğru mu? –

2

http2 ile ilgili bir şeyler bulmaya çalışın, bazı info var. Http2 protokolü paralel istekleri daha iyi desteklemektedir.

İlgili konular