2015-12-21 9 views
10

Sto cercando di fare "molti" xhr richiesta ma sembra che ogni volta che attende la risposta prima di fare un'altra richiesta. È come XHR fa una coda e aspetta sempre che la richiesta precedente termini.xmlhttprequest richiesta simultanea non funzionante

Cosa posso fare per eseguire più simultanee xhr richiesta?

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

hai provato a utilizzare web worker? – mrapsogos

+0

Sì e succede la stessa cosa..Il lavoratore viene chiamato insieme ma il secondo XHR aspetta il primo XHR per finire –

+0

Che ne dici di aprire nuove finestre del browser, creare il requset, usare il messaggio postale per inviare la risposta e quindi chiudere le finestre? Solo pensieri che possono aiutare .. non molto familiarità con il soggetto. – mrapsogos

risposta

11

Non molto.

browser applicano un limite:

  • Il numero di richieste HTTP parallele ad una determinata origine
  • Il numero di richieste HTTP parallele in totale (questo è un limite superiore)

Se dividi le tue richieste tra più originali potresti trovare il tuo vincolo sollevato dal primo al secondo di quelli sopra.

+1

Ho visto che il limite applicato da chrome dovrebbe essere di 6 richiesta massima, è giusto? –

2

Prova a trovare qualcosa su http2, c'è un po 'di info. Il protocollo Http2 supporta meglio le richieste parallele.