Crea una función para llamar a tu API. Dentro de esta función definimos solicitud callApiRequest = $.get(...
, aunque esta es una definición de una variable, la solicitud se llama de inmediato, pero ahora tenemos la solicitud definida como una variable. Antes de llamar a la solicitud, verificamos si nuestra variable está definida typeof(callApiRequest) != 'undefined'
y también si está pendiente suggestCategoryRequest.state() == 'pending'
; si ambas son verdaderas, hacemos .abort()
la solicitud, lo que evitará que se ejecute la devolución de llamada exitosa.
// 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
});
}
Es posible que su servidor / API no admita la cancelación de la solicitud (¿qué sucede si la API ya ejecutó algún código?), Pero la devolución de llamada de JavaScript no se activará. Esto es útil cuando, por ejemplo, está proporcionando sugerencias de entrada a un usuario, como la entrada de hashtags.
Puede ampliar aún más esta función agregando la definición de devolución de llamada de error, lo que debería suceder si se cancela la solicitud.
El caso de uso común para este fragmento sería una entrada de texto que se activa en keypress
caso de evento. Puede usar un tiempo de espera para evitar el envío de (algunas de) solicitudes que deberá cancelar .abort()
.