Créer une file d'attente de tableau de toutes vos demandes. Ensuite, si vous trouvez un point où vous devez annuler toutes les demandes existantes, vous pouvez simplement faire une boucle dans le tableau et appeler abort sur toutes les demandes en attente. Devrait être assez simple. Bien que l'autre façon est de simplement garder un drapeau interne qui indique si une demande est actuellement en cours et ignorer la demande s'il y en a un. Ou gérer la façon dont vous le souhaitez.
EDIT: Cochez cette question SO pour une situation similaire: How to avoid 3 ajax calls?
EDIT 2: Je ce que vous pouvez faire est d'avoir un tableau que vous ajoutez tous vos ajax appels. Ce qui consiste essentiellement à faire un XmlHttpRequest et c'est ce qui est retourné par l'appel ajax. Donc
requests.push(
$.ajax({
type: 'post',
url: '/test.php',
data: search_data,
success: function(data) {
$('#catalog').html(data);
}
}));
Ceci ajoutera toutes vos demandes à un tableau de requêtes que vous pouvez définir quelque part. Ensuite, quand vous voulez tuer toutes les requêtes en attente, vous pouvez simplement faire une boucle dans le tableau et appeler abort ce qui va tuer la requête. Ou simplement définir une variable en dehors de votre fonction qui est un indicateur indiquant si une requête est en cours. Vous pouvez même le rendre plus spécifique et stocker les données de recherche et seulement ignorer les demandes qui ont une demande en attente pour les mêmes données et autoriser d'autres demandes qui sont pour des données différentes.
Espérons que cela soit suffisant pour vous aider à démarrer.
+1 je le fais en utilisant exactement la même méthode. (sauf le nom de variable 'ajax_request' ^^) ... Et ça marche bien! – JoDev
Je viens de changer 'var ajax_request;' à 'var ajax_request = new XMLHttpRequest();' et ça marche. +1 pour l'idée – smartrahat