Ich verwende derzeit ein Tool zum Abrufen von Adressen in einer Datenbank mit dem jQuery-Ereignis keypress. Wenn die Texteingabe den Fokus verliert, werde ich alle ausstehenden Anforderungen abbrechen, um zu vermeiden, dass das Dropdown angezeigt wird, nachdem der Benutzer die Eingabe abgeschlossen hat. Alles funktioniert richtig, aber, um es zu beenden, sende ich eine letzte Ajax-Anfrage, um zum nächsten Schritt meines Formulars zu gehen. Diese Anfrage ist wirklich viel langsamer als zuvor, bevor ich alle diese Anfragen storniert habe. Ich verstehe nicht warum, eine abgebrochene Anfrage sollte sich nicht auf die ausstehende Anfrage auswirken (und ich bin mir sicher, dass sie annulliert wird, indem man sie in Chrome-Tools auf der Netzwerk-Registerkarte anschaut). Ich verwende diesen Code:jQuery ajax request canceled verlangsamt die aktuelle Anfrage
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 es denke, ich eine Optimierung Trick, den ich nicht bekommen. Danke für Ihre Hilfe.
Wenn Sie sie nicht abgebrochen haben, ist die Verzögerung noch da? –
Es ist viel langsamer als wenn ich sie annulliere. – M4nch4k
Und was ist, wenn Sie diese Anfrage gesendet haben, ohne die vorherigen, die Sie stornieren, zu senden? Ich vermute, die abgebrochenen Anfragen haben nichts damit zu tun, wie lange der, mit dem du Probleme hast, nimmt. –