我正在尝试测量下载/上传速度并同时发出大量 ajax 请求。其中一些由于浏览器连接限制而被阻止,所以我无法通过这样做来建立真正的下载时间:
var start = new Date;
$.get('/data').done(function () {
console.log(new Date - start);
});
所以,我以这种方式使用原始 xhr:
var open, start, end;
var req = new XMLHttpRequest();
req.open('GET', '/data', true);
req.onreadystatechange = function () {
switch (this.readyState) {
case 2:
case 3:
if (!start) { start = new Date(); }
break;
case 4:
if (!end) { end = new Date(); }
console.log('%d: pending = %d, download = %d, total = %d', i, start - open, end - start, end - open);
break;
}
};
if (!open) { open = new Date(); }
req.send();
有没有办法使用 jQuery 做同样的事情?
更新
我不需要start
在 ajax 请求之前进行初始化,而是在requestState
更改为 2 或 3(实际上是下载/上传)之后进行初始化。
更新#2
jQuery bugtracker 中存在相关问题:http: //bugs.jquery.com/ticket/9883