2015-12-21 3 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

हाँ और वही बात होती है..और दोनों कार्यकर्ताओं को एक साथ बुलाया जाता है लेकिन दूसरा एक्सएचआर –

+0

खत्म करने के लिए पहले एक्सएचआर की प्रतीक्षा करता है, नई ब्राउज़र विंडो खोलने के बारे में, रिक्यूसेट बनाएं, प्रतिक्रिया भेजने के लिए पोस्ट संदेश का उपयोग करें और फिर विंडो बंद करें? बस विचार जो मदद कर सकते हैं .. विषय से बहुत परिचित नहीं है। – mrapsogos

उत्तर

11

बहुत कुछ नहीं।

ब्राउज़र पर एक सीमा लागू:

  • किसी दिए गए मूल
  • कुल में समानांतर HTTP अनुरोध की संख्या (यह एक बड़ा सीमा नहीं है)

के समानांतर HTTP अनुरोध की संख्या यदि आप अपने अनुरोधों को अधिक मूल के बीच विभाजित करते हैं तो आप उपरोक्त के पहले से दूसरे तक अपनी बाधा पा सकते हैं।

+1

मैंने देखा है कि क्रोम द्वारा लागू सीमा होना चाहिए 6 अधिकतम अनुरोध, क्या यह सही है? –

2

http2 के बारे में कुछ खोजने का प्रयास करें, कुछ info हैं। एचटीपी 2 प्रोटोकॉल समानांतर अनुरोधों का बेहतर समर्थन करता है।

संबंधित मुद्दे