Aktualnie korzystam z narzędzia do pobierania adresów w bazie danych przy naciśnięciu klawisza zdarzenia jQuery. Gdy tekst zostanie utracony, anuluję wszystkie oczekujące żądania, aby uniknąć pojawienia się menu po ukończeniu wprowadzania danych przez użytkownika. Wszystko działa poprawnie, ale, aby zakończyć I Wyślij ostateczną prośbę ajax, aby przejść do następnego kroku mojego formularza. Ta prośba jest znacznie wolniejsza, niż wcześniej anulowałem wszystkie te żądania. Nie rozumiem, dlaczego anulowane żądanie nie powinno wpłynąć na oczekującą (i jestem pewien, że zostały anulowane, patrząc na kartę sieci w narzędziach chrome). Używam tego kodu:Żądanie ajax jQuery anulowane spowalnia bieżące żądanie
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();
});
Chyba tam trik optymalizacja nie dostanę. Dzięki za pomoc.
Jeśli ich nie anulowałeś, czy opóźnienie nadal istnieje? –
Jest to znacznie wolniejsze niż wtedy, gdy je anuluję. – M4nch4k
A co, jeśli wysłałeś tę prośbę bez uprzedniego wysłania któregoś z tych, które anulujesz? Podejrzewam, że anulowane żądania nie mają nic wspólnego z długością czasu, w którym występują problemy. –