0

重複の可能性:
XMLHttpRequest から進行状況を取得する方法

total1 mb のファイルを xmlhttprequest でダウンロードして、帯域幅測定のダウンロード時間を確認しようとしています。ただし、次のコードでは、サーバーからの応答時間が得られます。すべてのファイルがロードされるまで待機しません。

var start = new Date().getTime();
(function rec() {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', "https://www.example.com/test/dummyFile1024kb", true);   
xmlHttp.setRequestHeader("Cache-Control", "no-cache");
xmlHttp.onreadystatechange = function () {
     if (xmlHttp.readyState == 4) {
         var total=(new Date() - start)            
         alert(total)    
        };
       xmlHttp.send(null);
    })();

すべてのファイルをダウンロードするにはどうすればよいですか? 他の提案は大歓迎です。

4

1 に答える 1

1

xmlHttp.send(null);onreadystatechange関数の中にあるべきではありませんが、その後にあるべきです。進行中の XHR リクエストで send() を呼び出すと、完全なエラーではないにしても、不特定の動作が発生します。そして、それが readystatechange ハンドラー内にあるという事実は、 を呼び出している表示されていない他のコードがあることを意味しますxmlHttp.send()

つまり、あなたが望むのは次のとおりだと思います:

(function rec() {
  var start = new Date().getTime();
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.open('GET', "https://www.example.com/test/dummyFile1024kb", true);   
  xmlHttp.setRequestHeader("Cache-Control", "no-cache");
  xmlHttp.onreadystatechange = function () {
   if (xmlHttp.readyState == 4) {
      var total=(new Date() - start)            
      alert(total)    
    };
  };
  xmlHttp.send(null);
})();
于 2013-01-12T01:57:36.230 に答える