total我正在尝试使用xmlhttprequest下载1 mb文件,并检查带宽测量的下载时间。但是下面的代码只给出了服务器的响应时间。它不会等到所有文件都加载。
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);
})();
我该怎么做才能下载所有文件?欢迎任何其他建议。
答案 0 :(得分: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);
})();