[英]Strange setTimeout clearing behaviour with jQuery AJAX
因此,我正在嘗試為發送的每個請求設置一個超時,並確定一個請求是否花費太長時間。 我正在查看網絡標簽,每個請求都在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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.