У меня есть отчет в нашей внутренней системе, который может возвращать данные от 1 дня до полных лет. Из-за этого отчет может занять 0,5 секунды или более 45 секунд, чтобы сгенерировать все.
Отчет позволяет вам модифицировать кучу фильтров, каждый из которых при модификации запускает ajax-запрос очень просто:
var ax = $.ajax({
type: "GET",
url: "/blah",
data: values,
success: function(data) { .. }
});
Теперь проблема возникает, когда наш замечательный пользователь заявляет: «Ой, подождите! Я хочу, чтобы это было в феврале, а не в январе!». Но запрос уже происходит, так как в январе много данных! Итак, пользователь переключает опцию даты на февраль, и я вижу, как консоль Javascript отправляет второй запрос. Теперь у нас две гонки, и это гонка!
/ report /? Start_date = January (загрузка продолжается ...)
/ report /? Start_date = February (Эй, я тоже здесь сейчас!)
Тогда обычно меньший загружается раньше, но затем загружается другой, и он перезаписывает тот, который у них уже был .. хмм:)
Я пытался использовать ax.abort()
, помещенный после объявления переменной ax
, как упоминалось здесь , но, похоже, она не работает.
Так что теперь мне интересно, что мне не хватает? Я просто хочу убить текущий запрос (на стороне клиента, я знаю, что ничего не могу с этим поделать на стороне сервера), как только пользователь изменит некоторые параметры, чтобы у меня не было 2 или более запросов одновременно , Установка async: false
не является опцией, поскольку она просто блокирует пользователя.
Заранее спасибо за помощь.