Utwórz funkcję, aby wywołać interfejs API. W ramach tej funkcji definiujemy żądanie callApiRequest = $.get(...
- chociaż jest to definicja zmiennej, żądanie jest wywoływane natychmiast, ale teraz mamy zdefiniowane żądanie jako zmienną. Przed wywołaniem żądania sprawdzamy, czy nasza zmienna jest zdefiniowana, typeof(callApiRequest) != 'undefined'
a także czy jest w toku suggestCategoryRequest.state() == 'pending'
- jeśli oba są prawdziwe, to .abort()
żądanie, które zapobiegnie uruchomieniu wywołania zwrotnego powodzenia.
// 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
});
}
Twój serwer / API może nie obsługiwać przerywania żądania (co jeśli API wykonał już jakiś kod?), Ale wywołanie zwrotne javascript nie zostanie uruchomione. Jest to przydatne, gdy na przykład podajesz sugestie wejściowe użytkownikowi, takie jak dane hashtags.
Możesz dodatkowo rozszerzyć tę funkcję, dodając definicję wywołania zwrotnego błędu - co powinno się stać, jeśli żądanie zostanie przerwane.
Typowym przypadkiem użycia tego fragmentu kodu byłoby wprowadzanie tekstu, który jest uruchamiany w keypress
przypadku zdarzenia. Możesz użyć limitu czasu, aby zapobiec wysyłaniu (niektórych) żądań, które będziesz musiał anulować .abort()
.