Crie uma função para chamar sua API. Dentro dessa função, definimos solicitação callApiRequest = $.get(...
- mesmo que seja uma definição de variável, a solicitação é chamada imediatamente, mas agora temos a solicitação definida como uma variável. Antes que a solicitação seja chamada, verificamos se nossa variável está definida typeof(callApiRequest) != 'undefined'
e também se está pendente suggestCategoryRequest.state() == 'pending'
- se as duas forem verdadeiras, é .abort()
a solicitação que impedirá a execução do retorno de chamada com êxito.
// 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
});
}
Seu servidor / API pode não suportar a interrupção da solicitação (e se a API já tiver executado algum código?), Mas o retorno de chamada javascript não será acionado. Isso é útil quando, por exemplo, você está fornecendo sugestões de entrada para um usuário, como entrada de hashtags.
Você pode estender ainda mais essa função adicionando a definição de retorno de chamada de erro - o que deve acontecer se a solicitação for abortada.
Caso de uso comum para esse snippet seria uma entrada de texto que é acionada no keypress
evento. Você pode usar um tempo limite para impedir o envio de (algumas) solicitações que você precisará cancelar .abort()
.