Итак, я пытаюсь установить тайм-аут на каждый запрос, который отправляется и работает, если вы принимаете «слишком длинный». Я смотрю вкладку в сети, и каждый запрос находится в пределах до 300 мс, однако «слишком долго» регистрируется 6 раз! (количество запросов, которые я отправляю). Есть ли что-то, что я делаю неправильно с переменными, setTimeouts или что-то еще?Странное поведение очистки setTimeout с jQuery AJAX
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-адрес с слишком длинным сообщением и функцией 'timingEnd'. Это может дать вам немного больше информации для отладки. –
Есть ли вероятность, что вы делаете запрос AJAX на один и тот же URL более одного раза? Потому что, если вы есть, будет очищен только самый последний 'setTimeout' для этого URL-адреса. – Dan