所以,我正在尝试为每个发送的请求设置超时,如果一个“太长”则要解决。我正在观看网络选项卡,每个请求都在300毫秒以下,但“太久”会被记录6次! (我发送的请求数)。有变量,setTimeouts或其他东西我做错了吗?
var ajaxMonitor = {};
function timingStart() {
var url = arguments[2].url;
ajaxMonitor[url] = {};
ajaxMonitor[url].timer = setTimeout(function () {
console.log('too long');
}, 300);
}
function timingEnd() {
var url = arguments[2].url;
clearTimeout(ajaxMonitor[url].timer);
}
$(document).ajaxSend(timingStart);
$(document).ajaxComplete(timingEnd);
答案 0 :(得分:0)
正如评论中指出的那样,可能是因为您多次调用相同的URL。如果是这种情况,解决该问题的一种方法是在设置之前清除间隔:
function timingStart() {
var url = arguments[2].url;
clear(url);
ajaxMonitor[url] = {};
ajaxMonitor[url].timer = setTimeout(function () {
console.log('too long');
}, 300);
}
function timingEnd() {
var url = arguments[2].url;
clear(url);
}
function clear(url) {
if(ajaxMonitor[url])
clearTimeout(ajaxMonitor[url].timer);
}
$(document).ajaxSend(timingStart);
$(document).ajaxComplete(timingEnd);