Создать очередь массива всех ваших запросов.Затем, если вы найдете точку, где вам нужно прервать все существующие запросы, вы можете просто перебрать массив и вызвать abort для всех ожидающих запросов.Должно быть довольно просто.
Хотя другой способ - просто сохранить внутренний флаг, который указывает, обрабатывается ли в данный момент запрос, и пропустить его, если он есть.Или обработайте, как считаете нужным.
РЕДАКТИРОВАТЬ: проверьте этот вопрос SO для аналогичной ситуации: Как избежать 3 вызовов ajax?
РЕДАКТИРОВАТЬ 2: Итак, я, что выможет сделать это иметь массив, к которому вы добавляете все ваши вызовы ajax.По сути, это просто создание XmlHttpRequest, и это то, что возвращается из вызова ajax.Так что
requests.push(
$.ajax({
type: 'post',
url: '/test.php',
data: search_data,
success: function(data) {
$('#catalog').html(data);
}
}));
Это добавит все ваши запросы в массив запросов, который вы можете определить где-нибудь.Затем, когда вы захотите убить все ожидающие запросы, вы можете просто перебрать массив и вызвать abort, который прервет запрос.
for(var i = 0; i < requests.length; i++)
requests[i].abort();
Или просто определите переменную вне вашей функции, которая является флагом, указывающим, является лизапрос делается.Вы можете даже сделать его более конкретным, хранить данные поиска и пропустить только те запросы, которые ожидают выполнения для тех же данных и разрешают другие запросы для других данных.
Надеюсь, этого достаточно для начала работы.