全局处理jQuery的AJAX超时而不中止

时间:2013-10-24 10:32:17

标签: jquery ajax xmlhttprequest

我知道你可以在timeout上设置jQuery的$.ajaxSetup属性,但这会中止当前的timedout请求。

我需要有哪些选项来监控全局每个单独的AJAX请求所花费的时间,以供用户等待的反馈。

伪代码:

if(timeTaken > 1000){
    // taking a long time
} else if (timeTaken > 5000){
    // this is embarrassing, please refresh!
}

但是使用jQuery的AJAX全局实现......

1 个答案:

答案 0 :(得分:0)

你必须查看ajaxStart()和.ajaxStop()方法。

var totalTime = null;
var cachedTime = null;

function alertLoadingTime() {
    if(!totalTime) return;
    var loadingTime = totalTime / 1000;
    console.log("loaded " + loadingTime + " seconds");
}

function timingStart() {
    cachedTime = new Date;
}

function timingEnd() {
    var endTime = new Date;
    totalTime += endTime - cachedTime;
    cachedTime = null;
    alertLoadingTime();
}

$(document).ajaxStart(timingStart);

$(document).ajaxStop(timingEnd);

然后检查totalTime以警告smth。