测量同一页面上多个AJAX调用的处理时间

时间:2014-05-09 16:17:26

标签: javascript jquery ajax

通过这种方式,我可以测量我的ajax调用的处理时间

var ajaxTime= new Date().getTime();
$.ajax({
    type: "POST",
    url: "some.php",
}).done(function () {
    var totalTime = new Date().getTime()-ajaxTime;
    // Here I want to get the how long it took to load some.php and use it further
});

但是,如果我想在同一页面获得多个ajax调用的处理时间,我该怎么办?

我的意思是这样的:

var i;
var j = 5;
for (i = 0; i < j; i++) {
var ajaxTime= new Date().getTime();
$.ajax({
    type: "POST",
    url: "some.php",
}).done(function () {
    var totalTime = new Date().getTime()-ajaxTime;
    // Here I want to get the how long it took to load some.php and use it further
});
}

我需要知道每次通话的响应时间

1 个答案:

答案 0 :(得分:1)

你的问题是no block scope in JavaScript,所以ajaxTime在每次循环迭代时都不会被重新声明(它被设置为每次迭代的当前时间)。您可以将$.ajax代码重构为函数或使用闭包,以便为每个请求使用新的ajaxTime变量:

var i;
for (i = 0; i < 5; i++) {
    makeRequest(i);
}

function makeRequest(i) {
    var ajaxTime = new Date().getTime();
    $.ajax({
        url: 'some.php',
        type: 'POST'
    }).done(function () {
        var total = new Date().getTime() - ajaxTime;
        console.log('Elapsed time: ' + total);
    });
}

示例: http://jsfiddle.net/Y9MJk/1/