Я пытаюсь измерить скорость загрузки/выгрузки и сделать много одновременных запросов ajax. Некоторые из них заблокированы из-за лимита соединений браузера, поэтому я не могу установить реальное время загрузки, делая какую-то это:Измерьте время приема 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?
UPDATE
мне нужно инициализировать start
не раньше АЯКС запроса, но после того, как requestState
изменен на 2 или 3 (на самом деле скачивания/загрузки).
UPDATE # 2
Там в смежный вопрос в JQuery багтрекере: http://bugs.jquery.com/ticket/9883
Вы спрашиваете, имеет ли функция $ .ajax jQuery обратный вызов fail() и done(), чтобы сообщить вам, был ли успешный вызов ajax? – adeneo
@PalashMondal Это почти как мой первый пример. Он рассчитывает на время ожидания, например, когда readyState === 3 и данные еще не загружаются. – ixth