Derzeit verwende ich ein Tool, um Adressen in einer Datenbank beim jQuery-Tastendruckereignis abzurufen. Wenn das Texteingabefeld den Fokus verliert, breche ich alle ausstehenden Anfragen ab, um zu verhindern, dass das Dropdown-Menü erscheint, nachdem der Benutzer die Eingabe abgeschlossen hat. Alles funktioniert korrekt, aber zum Abschluss sende ich eine letzte Ajax-Anfrage, um zum nächsten Schritt meines Formulars zu gelangen. Diese Anfrage ist wirklich viel langsamer als bevor ich alle diese Anfragen abgebrochen habe. Ich verstehe nicht warum, eine abgebrochene Anfrage sollte die ausstehende nicht beeinflussen (und ich bin sicher, dass sie abgebrochen sind, wenn ich sie im Netzwerk-Tab in den Chrome-Tools überprüfe).
jQuery.xhrPool = [];
jQuery.xhrPool.abortAll = function() {
jQuery(this).each(function(idx, jqXHR) {
jqXHR.abort();
jQuery('.loader').hide();
});
};
jQuery.ajaxSetup({
beforeSend: function(jqXHR) {
jQuery.xhrPool.push(jqXHR);
},
complete: function(jqXHR) {
var index = jQuery.xhrPool.indexOf(jqXHR);
if (index > -1) {
jQuery.xhrPool.splice(index, 1);
}
}
});
jQuery('#my_input').blur(function(){
jQuery.xhrPool.abortAll();
});
Ich vermute, dass es einen Optimierungstrick gibt, den ich nicht verstehe. Vielen Dank für Ihre Hilfe.