Создайте функцию для вызова вашего API. В этой функции мы определяем запрос callApiRequest = $.get(...
- даже если это определение переменной, запрос вызывается немедленно, но теперь у нас есть запрос, определенный как переменная. Перед вызовом запроса мы проверяем, определена ли наша переменная, typeof(callApiRequest) != 'undefined'
а также, ожидает ли она ответа suggestCategoryRequest.state() == 'pending'
- если оба значения верны, мы .abort()
выполняем запрос, который не позволит выполнить успешный обратный вызов.
// We need to wrap the call in a function
callApi = function () {
//check if request is defined, and status pending
if (typeof(callApiRequest) != 'undefined'
&& suggestCategoryRequest.state() == 'pending') {
//abort request
callApiRequest.abort()
}
//define and make request
callApiRequest = $.get("https://example.com", function (data) {
data = JSON.parse(data); //optional (for JSON data format)
//success callback
});
}
Ваш сервер / API может не поддерживать прерывание запроса (что, если API уже выполнил некоторый код?), Но обратный вызов javascript не сработает. Это полезно, когда, например, вы предоставляете пользователю предложения ввода, такие как ввод хэштегов.
Вы можете дополнительно расширить эту функцию, добавив определение обратного вызова ошибки - что должно произойти, если запрос был прерван.
Распространенным вариантом использования этого фрагмента будет ввод текста, который инициирует keypress
событие. Вы можете использовать тайм-аут, чтобы предотвратить отправку (некоторых) запросов, которые вам придется отменить .abort()
.