gpt4 book ai didi

javascript - jQuery AJAX 的奇怪 setTimeout 清除行为

转载 作者:行者123 更新时间:2023-11-30 06:28:20 25 4
gpt4 key购买 nike

因此,我尝试为发送的每个请求设置一个超时时间,并判断一个请求是否“太长”。我正在查看网络选项卡,每个请求都在 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);

最佳答案

正如评论中指出的那样,这可能是因为您多次调用同一个 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);

关于javascript - jQuery AJAX 的奇怪 setTimeout 清除行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19569120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com